RowDoubleClick 上的 DataGrid RowDetails 可见性

Posted

技术标签:

【中文标题】RowDoubleClick 上的 DataGrid RowDetails 可见性【英文标题】:DataGrid RowDetails Visibility on RowDoubleClick 【发布时间】:2020-02-19 04:26:09 【问题描述】:

在我的 Datagrid xaml 中,我将 rowdetailsvisibilitymode 设置为折叠。

然后我在 RowDoubleClick 上创建了一个事件,以在双击该行时折叠和展开该行的详细信息:

private void DgRowDoubleClick(object sender, RoutedEventArgs e)
  
    var row = (DataGridRow)sender;
    row.DetailsVisibility = row.DetailsVisibility == Visibility.Collapsed ?
        Visibility.Visible : Visibility.Collapsed;

现在我想在选择新行时折叠这些详细信息...我想在选择时模仿可见,但使用双击。

我的想法是:如果可能的话;选择新行时,行的详细信息会折叠,但新行在双击之前不会展开。第二次双击也应该能够折叠当前选定行的详细信息。

【问题讨论】:

【参考方案1】:

处理 DataGrid RowSelected 事件。在此事件中隐藏上一行。 现在为了访问前一行,简单的方法是在双击事件中保留引用。像这样的:

    DataGridRow visibleDetailRow = null;
    private void Row_DoubleClick(object sender, RoutedEventArgs e)
    
        visibleDetailRow = (DataGridRow)sender;
        visibleDetailRow.DetailsVisibility = visibleDetailRow.DetailsVisibility == Visibility.Collapsed ?
            Visibility.Visible : Visibility.Collapsed;
    

    private void DataGridRow_Selected(object sender, RoutedEventArgs e)
    
        if(visibleDetailRow != null)
            visibleDetailRow.DetailsVisibility = Visibility.Collapsed;
    

我不确定您是否在代码中使用 MVVM,也许可以通过使用 MVVM 绑定您的详细信息可见性以更优雅的方式处理它,但是,该解决方案只是在您的代码上扩展。

【讨论】:

以上是关于RowDoubleClick 上的 DataGrid RowDetails 可见性的主要内容,如果未能解决你的问题,请参考以下文章

FineUI grid列表拓展列

FineUI grid列表双击事件弹出详情

获取wpf datagrid单元格编辑事件

DataGrid和Silverlight

Easy UI行号位数多显示有问题

SSSDJ+easyU创建报表