WPF - 将 EventSetter 连接到 ICommand
我正在寻找一种解决方案,双击 DataGridRow,使用 ICommand 调用 ViewModel 中的方法。
我的 DataGrid 的 DataGridRow 样式有以下代码:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick"
Handler="DataGridRow_MouseDoubleClick" />
</Style>
</DataGrid.Resources>
这有效,但是...
我需要在 XAML 的代码隐藏中使用 DataGridRow_MouseDoubleClick
方法。然后在该方法中我需要调用 ViewModel 中的方法。
我想绕过代码隐藏并直接使用 ICommand 调用 ViewModel 中的方法。
我发现这段代码很优雅,但是只要我(向左)双击 DataGrid,就会调用该方法。
<DataGrid>
<DataGrid.InputBindings>
<MouseBinding Gesture="LeftDoubleClick"
Command="{Binding MyCallback}" />
</DataGrid.InputBindings>-->
</DataGrid>
我只能允许双击 DataGridRow。
有什么建议吗?
/BR
斯特夫
I'm looking for a solution where I double click on a DataGridRow that calls a method in my ViewModel with an ICommand.
I have this code for my DataGrid's DataGridRow style:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick"
Handler="DataGridRow_MouseDoubleClick" />
</Style>
</DataGrid.Resources>
This works, but...
I need to have the method DataGridRow_MouseDoubleClick
in the XAML's code-behind. Then in that method I need to call the method in my ViewModel.
I would like to bypass the code-behind and directly call the method in the ViewModel with an ICommand.
I found this code which was elegant but, calls the method whereever I (left) double click on the DataGrid.
<DataGrid>
<DataGrid.InputBindings>
<MouseBinding Gesture="LeftDoubleClick"
Command="{Binding MyCallback}" />
</DataGrid.InputBindings>-->
</DataGrid>
I can only allow double click on a DataGridRow.
Any suggestions?
/BR
Steffe
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将事件处理程序替换为执行命令的附加行为:
XAML:
You could replace the event handler with an attached behaviour that executes the command:
XAML:
首先,在您的项目中安装下面提到的 Nuget 包。
然后将以下引用添加到相关的 xaml 字段。
下一步,您可以按如下方式应用双击功能。
First, install the Nuget package mentioned below in your project.
Then add the following reference to the relevant xaml field.
As the next step, you can apply the double click function as follows.