我想制作一个小型WPF项目,其中包含一个不应在单元格中具有文本值的表,而是根据值更改背景颜色。该表应如下所示:
我应该使用哪个控件以及如何通过行和列的索引更改颜色(对于此控件)。
我已经编写了一些代码,但它不起作用。
<Grid Name="Grid">
<DataGrid Name="DataGrid" ItemsSource="{Binding DataView, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HeadersVisibility="None" SelectionUnit="Cell">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="true">
<Setter Property="Background" Value="Black"/>
</DataTrigger>
<DataTrigger Binding="{Binding Value}" Value="false">
<Setter Property="Background" Value="White"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
</Grid>
public class MainViewModel : ReactiveObject
{
[Reactive]
public DataView DataView { get; set; }
public MainViewModel()
{
var array = new int[2, 2] { { 1, 0 }, { 1, 0 } };
var rows = array.GetLength(0);
var columns = array.GetLength(1);
var t = new DataTable();
for (var c = 0; c < columns; c++)
{
t.Columns.Add(new DataColumn());
}
for (var r = 0; r < rows; r++)
{
var newRow = t.NewRow();
for (var c = 0; c < columns; c++)
{
newRow[c] = new MyCell() {Value = array[r, c] == 1};
}
t.Rows.Add(newRow);
}
DataView = t.DefaultView;
}
}
public class MyCell
{
public bool Value { get; set; }
}