WPF DataGrid嵌套波段 - 删除以前选定的行颜色

时间:2014-08-15 11:27:21

标签: c# wpf xaml datagrid

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

这可以通过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);

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

干杯

1 个答案:

答案 0 :(得分:0)

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

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

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

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