双击数据网格时出现问题我在C#代码中的数据网格上有以下内容:除非用户先选择一行(单击)然后尝试双击该行,否则主要是有用。在这种情况下,永远不会触发CmdTransUnitFillerRowDblClick代码进行处理。那么,当行已被选中时,如何在双击时正确触发CmdTransUnitFillerRowDblClick?有人可能会问:privatevoidExecutecmdTransUnitFillerRowDblClick(objectparameter){if(DgTransUnitFillerSelectedItem!=null)TransUnitFillerDoubleClick(DgTransUnitFillerSelectedItem.CollectionRowId);请参阅我对其他相关问题的回答。问题在于,在用户选择一行(或实际上是一个单元格)后,数据网格不再具有焦点;用户在数据网格中单击的单元格。因此,您必须将焦点更改回数据网格以允许这样做。更改:至:...并添加:privatevoidExecutecmdTransUnitFillerRowClick(对象参数){if(DgTransUnitFillerSelectedItem!=null)The_Name_Of_Your_DataGrid.Focus();在现有的InputBinding之上,您可以使用Style将InputBinding附加到每个单元格:这需要使用此处的MouseCommands类。publicstaticclassMouseCommands{privatestaticvoidLeftDoubleClickChanged(DependencyObjectsender,DependencyPropertyChangedEventArgsargs){varcontrol=(Control)sender;if(args.NewValue!=null&&args.NewValueisICommand){varnewBinding=newMouseBinding(args.NewValueasICommand,newMouseGesture(MouseAction.LeftDoubleClick));control.InputBindings.Add(newBinding);}else{varoldBinding=control.InputBindings.Cast().First(b=>b.Command.Equals(args.OldValue));control.InputBindings.Remove(oldBinding);}}publicstaticreadonlyDependencyPropertyLeftDoubleClickProperty=DependencyProperty.RegisterAttached("LeftDoubleClick",typeof(ICommand),typeof(MouseCommands),newUIPropertyMetadata(LeftDoubleClickChanged));publicstaticvoidSetLeftDoubleClick(DependencyObjectobj,ICommandvalue){obj.SetValue(LeftDoubleClickProperty,value);}publicstaticICommandGetLeftDoubleClick(DependencyObjectobj){return(ICommand)obj.GetValue(LeftDoubleClickProperty);虽然我认为更简洁的方法是在代码隐藏中处理MouseDoubleClick事件,并通过直接调用ViewModel或在命令上调用.Execute()来手动提升命令执行。以上就是C#学习教程:双击datagrid时出现问题的所有内容分享,如果对大家有用还需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
