我们正在 WPF 应用程序中实现 MVVM 架构。我们想使用 Infragistics XamDataGrid,但是对于在视图模型层上实现选择更改事件有点迷失。
任何帮助将不胜感激。
我们迫切需要一个解决方案!!!
Anshuman Chakravarty Humana Inc.
我们正在 WPF 应用程序中实现 MVVM 架构。我们想使用 Infragistics XamDataGrid,但是对于在视图模型层上实现选择更改事件有点迷失。
任何帮助将不胜感激。
我们迫切需要一个解决方案!!!
Anshuman Chakravarty Humana Inc.
对于 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>
这是 xamdatagrid 的其他一些事件。
SelectedItemsChanged
SelectedItemsChanging
RecordActivating
RecordActivated
这些可能会对您有所帮助。
我已经解决了上述问题。我以一种非常简单的方式做到了。
简单但有效!!!
如果您希望能够使用 MVVM 绑定所选项目,那么我建议使用行为来完成此操作。Devin Rader 写了一篇博客文章,其中介绍了在视图模型和用于选择的 UI 之间同步值,您可以使用类似的东西来了解视图模型中的选择何时发生变化。
如果您对此事有任何疑问,请告诉我。
我从未使用过您所询问的数据网格,但您可以打赌它与其他所有内容一样工作。
在您将视图绑定到的 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} />