0

在我的 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;
}

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

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

4

1 回答 1

0

处理 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 绑定您的详细信息可见性以更优雅的方式处理它,但是,该解决方案只是在您的代码上扩展。

于 2019-10-23T04:40:36.677 回答