WPF数据网格嵌套带-删除先前选定的行颜色

本文关键字:颜色 删除 数据网 数据 网格 嵌套 WPF | 更新日期: 2023-09-27 18:18:04

我有一个带状的WPF DataGrid,如果你选择顶部的带,行将变成蓝色,表示它是选中的drow(默认情况下)。但是,当用户从第二个波段选择一行时,我希望顶部波段的蓝色消失,因为这意味着很难发现在层次结构中选择了什么行。

可以通过XAML或c#实现吗?

通过XAML,我可以在每个波段(RowDetailsTemplate)上使用这样的东西

 <DataGrid.RowStyle>
     <Style TargetType="DataGridRow">
        <Style.Triggers>
           <Trigger Property="IsSelected"
                    Value="True">
              <Setter Property="BorderBrush"
                    Value="Blue" />
              <Setter Property="BorderThickness"
                    Value="2" />
           </Trigger>
        </Style.Triggers>
     </Style>
  </DataGrid.RowStyle>

通过c#我可以在点击一行时得到selectedRow

DataGridRow selectedRow = DataGridRow.GetRowContainingElement(expandCollapseButton);

所以我有几个可能性,但我需要帮助获得"前一行,然后取消颜色"

欢呼

WPF数据网格嵌套带-删除先前选定的行颜色

如果我理解正确,您只是想取消选择DataGrid中选定的行,当一行从第二个波段(无论那是什么)中被选中时。从DataGrid中删除选择的一种简单方法是将SelectedItem属性设置为null:

<DataGrid Name="DataGrid" ItemsSource="{Binding Items}" ... />

然后在后面的代码中,当选择另一行时(可能在SelectionChanged事件处理程序中),您可以简单地调用:

private void SecondBandSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    DataGrid.SelectedItem = null;
}