WPF数据网格双击通过命令+ INotifyPropertyChanged
本文关键字:命令 INotifyPropertyChanged 双击 数据 数据网 网格 WPF | 更新日期: 2023-09-27 18:16:17
我想在我的ViewModel中执行一个命令,当DataGrid项被单击时。作为参数,我希望有相应的行
我在互联网上找到了一种方法,但它使用DependencyProperty
http://social.msdn.microsoft.com/forums/en - us/wpf/thread/632ea875 a5b8 - 4 - d47 - 85 - b3 - b30f28e0b827
我不使用DependencyProperty
在我的项目,而不是我使用INotifyPropertyChanged
。如何在不使用DependencyProperty
的情况下实现"在数据网格中双击"命令?
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
...
<DataGrid SelectedItem={Binding MySelectedItem, Mode=TwoWay}>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding YourCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
我通常使用AttachedCommandBehavior。它是3个类文件,可以添加到您的项目中,并允许您将命令附加到几乎任何事件。
下面是一个如何使用它的例子:
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="local:CommandBehavior.Event" Value="MouseDoubleClick" />
<Setter Property="local:CommandBehavior.Action" Value="{Binding MyDoubleClickCommand}" />
<Setter Property="local:CommandBehavior.CommandParameter" Value="{Binding }" />
</Style>
MVVM Light Toolkit提供了EventToCommand行为,这应该能够实现所需的行为(如果您不想使用框架,您可以随时使用自己的行为)
您可以使用这个隐藏代码片段来标识被双击的行。
在注释"//对底层数据做一些事情"的行中,您可以从网格或行的DataContext中获得附加的ViewModel,并以行为参数调用您的命令。