试图弄清楚如何使用 EventToCommand 为行设置数据网格双击处理程序。该命令位于每行的视图模型中。只是that很大程度上来自我的经验,因为我还没有使用过交互。
Thanks.
我本来会使用 mvvmlight 标签,但我还没有足够高的代表来制作新标签。
如果命令位于“GridVieModel”而不是“RowViewModel”上,这将是解决方案。
<Window...
...xmlns:dg="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:GalaSoft_MvvmLight_Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras">
<dg:DataGrid x:Name="dg">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<GalaSoft_MvvmLight_Command:EventToCommand CommandParameter="{Binding SelectedItem, ElementName=dg}" Command="{Binding Path=SelectCommand, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</dg:DataGrid>
</Window>
您可以创建一个行视图,因为该行也有自己的视图模型,并使用行视图中该行(容器)的子元素的 mousedoubleclick 事件。
或者您为命令绑定创建一个转换器:
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding SelectedItem, ElementName=dg, Mode=OneWay, Converter=...}"/>
然后转换器将检查 selectedItem 是否是返回命令所需的类型(类似于带有 RelayCommand 属性的 ISelectCommandable)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)