C# DataGrid行详细信息行的可见性双击
在我的Datagrid xaml中,我将rowdetailsvisibilitymode设置为collapsed 然后我在行上创建了一个事件DoubleClick可在双击行时折叠并展开该行的详细信息:C# DataGrid行详细信息行的可见性双击,c#,wpf,datagrid,visibility,rowdetails,C#,Wpf,Datagrid,Visibility,Rowdetails,在我的Datagrid xaml中,我将rowdetailsvisibilitymode设置为collapsed 然后我在行上创建了一个事件DoubleClick可在双击行时折叠并展开该行的详细信息: private void DgRowDoubleClick(object sender, RoutedEventArgs e) { var row = (DataGridRow)sender; row.DetailsVisibility = row.DetailsVisibil
private void DgRowDoubleClick(object sender, RoutedEventArgs e)
{
var row = (DataGridRow)sender;
row.DetailsVisibility = row.DetailsVisibility == Visibility.Collapsed ?
Visibility.Visible : Visibility.Collapsed;
}
现在我想在选择新行时折叠这些细节。。。我想在选择时模仿VisibleWhen,但使用双击
我的想法是:如果可能的话;选中新行时,行的详细信息将折叠,但新行在双击之前不会展开。第二次双击还应该能够折叠当前选定行的详细信息。处理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绑定您的细节可见性来以更优雅的方式处理它,但是,解决方案只是在您的代码上进行了扩展