c# - 双击数据网格的问题

标签 c# wpf xaml wpfdatagrid

我的 C# 代码中的数据网格有以下内容:

<DataGrid.InputBindings>  
    <MouseBinding Gesture="LeftDoubleClick" Command="{Binding CmdTransUnitFillerRowDblClick}" />  
</DataGrid.InputBindings>  

它在大多数情况下都有效,除非用户先选择该行(单击)然后尝试双击该行。在这种情况下,永远不会触发 CmdTransUnitFillerRowDblClick 代码进行处理。

那么,当行已被选中时,我怎样才能让 CmdTransUnitFillerRowDblClick 在双击时正确触发?
既然有人会问:

private void ExecutecmdTransUnitFillerRowDblClick(object parameter)  
{
    if (DgTransUnitFillerSelectedItem != null)
        TransUnitFillerDoubleClick(DgTransUnitFillerSelectedItem.CollectionRowId);
}

最佳答案

参见 my answer to another related question .问题在于,在用户选择一行(实际上是单元格)后,数据网格不再具有焦点;用户在数据网格中 单击的单元格。因此,您必须将焦点更改回数据网格以允许这样做。

改变:

<DataGrid.InputBindings>  
    <MouseBinding Gesture="LeftDoubleClick" Command="{Binding CmdTransUnitFillerRowDblClick}" />  
</DataGrid.InputBindings>

收件人:

<DataGrid.InputBindings>  
    <MouseBinding Gesture="LeftDoubleClick" Command="{Binding CmdTransUnitFillerRowDblClick}" />  
    <MouseBinding Gesture="LeftClick" Command="{Binding CmdTransUnitFillerRowClick}" />  
</DataGrid.InputBindings>

...并添加:

private void ExecutecmdTransUnitFillerRowClick(object parameter)  
{
    if (DgTransUnitFillerSelectedItem != null)
        The_Name_Of_Your_DataGrid.Focus();
}

关于c# - 双击数据网格的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24455461/

相关文章:

c# - 使用 HTML Agility Pack 和 xpath 将 "iso-8859-1"转换为 "utf-8"

c# - 如何创建与 TransactionScope 一起使用的类?

.net - 在鼠标悬停时更改周围边框的样式

c# - 线程必须是 STA-Thread,但它已经是

c# - WPF 项目不支持 Canvas ?

c# - MyUserControl 不能是 XAML 文件的根,因为它是使用 XAML 定义的

c# - 线程本地存储

C#:将位图图像流转换为avi文件

c# - 将 checkbox.ischecked 绑定(bind)到 bool 属性?

c# - WPF窗口中的透明PNG