我正在尝试实现此目的:当用户在DataGrid中选择一个或多个单元格时,所有重复项的背景颜色都应更改。
我有这个xaml
<Window x:Class="NotesOnFretboard.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="true" Margin="12,110,12,29" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" IsReadOnly="True" />
</Grid>
</Window>
代码背后的代码:
public MainWindow()
{
InitializeComponent();
DataTable dt = CreateDataTable();
dataGrid1.ItemsSource = dt.DefaultView;
}
所以我使用DataTable(10行,25列)填充数据网格。 在这个数据表中有许多重复的值。
当用户在DataGrid中选择一个或多个单元格时,所有重复项的背景颜色都应该更改!
请帮助!
// Anders
答案 0 :(得分:1)
你应该使用触发器来实现这一目标 查看此综合指南:Styling Microsoft’s WPF datagrid
答案 1 :(得分:1)
您可以更改集合类,使其具有指示是否应突出显示的属性,然后将该属性(通过转换器)绑定到要更改颜色的元素属性。 你可以响应选择/点击,并根据你想要的标准将你的ItemSource'selected'属性更改为true / false。
类似于:
<sdk:DataGrid x:Name="NoteList"
AutoGenerateColumns="False"
GridLinesVisibility="None"
HeadersVisibility="None"
IsReadOnly="True"
ItemsSource="{Binding NoteList,Mode=OneWay}">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Width="Auto">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding NoteDescription, Mode=OneWay}"
Background="{Binding NoteHighlighted,
Converter={StaticResource BooleanToColourConverter}}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>