1

我们正在 WPF 应用程序中实现 MVVM 架构。我们想使用 Infragistics XamDataGrid,但是对于在视图模型层上实现选择更改事件有点迷失。

任何帮助将不胜感激。

我们迫切需要一个解决方案!!!

Anshuman Chakravarty Humana Inc.

4

5 回答 5

4

对于 Infragistic v11.2,XamlDataGrid 具有名为ActiveDataItem的属性,表示绑定到行的当前数据项。

您可以做的是在 ViewModel 中创建属性并将其绑定到 XamlDataGrid 的 ActiveDataItem,如下所示,并观察如下更改。

<igDataPresenter:XamDataGrid ActiveDataItem="{Binding ActiveItem, Mode=TwoWay}" >

我的场景:我想在双击单个行时对绑定到单个网格行的 dataItem 触发命令,下面的 xaml 代码对我有用,

        <igDataPresenter:XamDataGrid x:Name="DemoGrid" 
                    DataSource="{Binding Path=Items, Mode=OneWay}"
        >
      <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseDoubleClick">
          <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=igDataPresenter:XamDataGrid}, Path=ActiveDataItem.ViewCommand}"></i:InvokeCommandAction>

        </i:EventTrigger>
      </i:Interaction.Triggers>
于 2016-01-21T14:45:18.143 回答
2

这是 xamdatagrid 的其他一些事件。

SelectedItemsChanged
SelectedItemsChanging

RecordActivating
RecordActivated

这些可能会对您有所帮助。

于 2012-06-01T12:01:14.377 回答
2

我已经解决了上述问题。我以一种非常简单的方式做到了。

  1. 将 XamGrid 的 ActiveCell 属性绑定到 VM 中的对象类型属性。
  2. 在属性的setter中,调用方法并传递对象。
  3. 在方法内部,将对象转换为 Infragictics.Windows.Cell 类型变量。
  4. 使用 Infragistics.Windows.Cell 对象的 Record.Index 查找选定索引。
  5. 使用该索引,查找从 xamdatagrid 绑定到的原始集合/数据源中选择的行。

简单但有效!!!

于 2012-06-05T19:20:44.117 回答
0

如果您希望能够使用 MVVM 绑定所选项目,那么我建议使用行为来完成此操作。Devin Rader 写了一篇博客文章,其中介绍了在视图模型和用于选择的 UI 之间同步值,您可以使用类似的东西来了解视图模型中的选择何时发生变化。

如果您对此事有任何疑问,请告诉我。

于 2012-06-08T08:02:25.580 回答
-2

我从未使用过您所询问的数据网格,但您可以打赌它与其他所有内容一样工作。

在您将视图绑定到的 ViewModel 中,将有一个名为 SelectedItem 的属性或类似的东西。

public object SelectedItem
{
    get { return (object)GetValue(SelectedItemProperty); }
    set { SetValue(SelectedItemProperty, value); }
}

// Using a DependencyProperty as the backing store for SelectedItem.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedItemProperty =
    DependencyProperty.Register("SelectedItem", typeof(object), typeof(ownerclass), new UIPropertyMetadata(0));

在 xaml 中,您可能可以将 grids Selected 属性绑定到该依赖项属性。

<XamDataGrid ItemsSource={Binding Items} SelectedItem={Binding SelectedItem, UpdateSourceTrigger=PropertyChanged} />
于 2012-05-31T17:49:10.243 回答