Infragistics XamDataGrid WPF MVVM SelectionChanged



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

任何帮助将不胜感激。

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

安斯曼·查克拉瓦蒂人类公司

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

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

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

我的场景:我想在双击单个行时对绑定到单个网格行的数据项触发命令,下面的 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

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

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

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

简单,但有效!!

如果您希望

能够使用 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 中,您可能可以将网格选定属性绑定到该依赖项属性。

<XamDataGrid ItemsSource={Binding Items} SelectedItem={Binding SelectedItem, UpdateSourceTrigger=PropertyChanged} />

相关内容

  • 没有找到相关文章

最新更新