每当用户点击一个按钮时,我想获取DataGrid中的选定行并更改其背景颜色? 我可以使用SelectedIndex属性获取所选行的索引,但我不知道如何更改相同的背景。
我在VS2010中使用WPF,C#和.Net 4。
...谢谢
答案 0 :(得分:3)
最好使用触发器进行此类操作,但请尝试以下
private void button_Click(object sender, RoutedEventArgs e)
{
DataGridRow dataGridRow = dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex) as DataGridRow;
if (dataGridRow != null)
{
dataGridRow.Background = Brushes.Green;
}
}
修改强>
选定的DataGridCells
仍将覆盖该背景,因此您可能必须使用父Tag
上的DataGridRow
属性来处理该背景,例如
<DataGrid ...>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}},
Path=Tag}" Value="ChangedBackground">
<Setter Property="Background" Value="Transparent" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<!--...-->
</DataGrid>
private void button_Click(object sender, RoutedEventArgs e)
{
DataGridRow dataGridRow = dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex) as DataGridRow;
if (dataGridRow != null)
{
dataGridRow.Background = Brushes.Green;
dataGridRow.Tag = "ChangedBackground";
}
}
答案 1 :(得分:2)
试试这个
//get DataGridRow
DataGridRow row = (DataGridRow)dGrid.ItemContainerGenerator.ContainerFromIndex(RowIndex);
row.Background = Brushes.Red;
答案 2 :(得分:0)
DataGridRow具有Background属性。这是你需要的吗?
答案 3 :(得分:0)
你也可以用这个:
<DataGrid ...>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}},
Path=IsSelected}" Value="true">
<Setter Property="Background" Value="Transparent" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<!--...-->