Joe*_*Joe 9 wpf datagrid icommand
我开发了一个WPF UserControl,旨在用作选择列表,如下所示:
我想公开一个Command,当用户双击DataGrid中的一行时将执行该命令.然后,容器可以通过对DataGrid中的SelectedItem执行某些操作来对此做出反应.
到目前为止,我已尝试按如下方式处理双击:
<DataGrid IsReadOnly="True">
<DataGrid.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="... />
</DataGrid.InputBindings>
...
Run Code Online (Sandbox Code Playgroud)
但是,当用户单击DataGrid标头时,双击事件仍会触发.我希望能够限制它,以便只在双击位于DataGrid的主体中时才执行Command.是否有声明性的方法来做到这一点?
UPDATE
我刚刚开始研究WPF和MVVM,我真的在寻找如何实现像这样的低级可重用组件的指导.任何一般性建议也将被感激地收到和投票.就目前而言,我假设我希望这个UserControl:
公开绑定到DataGrid的SelectedItem的依赖项属性"SelectedItem"
公开当用户双击行时触发的RoutedEvent"ItemDoubleClick"或类似内容.
从行双击事件处理程序实现ICommandSource和调用CommandHelpers.ExecuteCommandSource(this).
H.B*_*.B. 10
如果后面的代码不是问题:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="Loaded" Handler="Row_Loaded"/>
</Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)
private void Row_Loaded(object sender, RoutedEventArgs e)
{
var row = sender as DataGridRow;
row.InputBindings.Add(new MouseBinding(MyCommands.MyCommand,
new MouseGesture() { MouseAction = MouseAction.LeftDoubleClick }));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15267 次 |
| 最近记录: |