0
我有一个DataGrid并需要在某些单元格上设置单独的背景颜色并更改所选单元格的颜色。 改变选择的颜色效果很好,如果尝试设置背景颜色而没有绑定它也可以。我认为我的绑定是错误的。Datagrid单元格背景颜色绑定
所以我用这个代码在XAML
<Style TargetType="{x:Type DataGridCell}" x:Key="NumberCell">
<Style.Setters>
<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource FindAncestor},Path=StatusColor}"></Setter>
</Style.Setters>
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True" >
<Setter Property="Background" Value="{StaticResource LoudBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource LoudBrush}" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Trigger>
</Style.Triggers>
</Style>
我为填充DataGrid代码:
private void AddColumns(DataGrid dataGrid, IEnumerable<User> Users)
{
var columnsAmount = dataGrid.Columns.Count;
if(columnsAmount > 1)
{
var dayColumnKepper = dataGrid.Columns[0];
dataGrid.Columns.Clear();
dataGrid.Columns.Insert(0, dayColumnKepper);
}
foreach(var user in Users)
{
var column = new DataGridTextColumn();
column.Binding = new Binding(string.Format("UserWorkplan[{0}].Appointment.Type", user.Id));
column.Header = user.Username;
column.CellStyle = (Style)Resources["NumberCell"];
dataGrid.Columns.Insert(1, column);
}
}
public IDictionary<int, CalenderWorkplanEntry> UserWorkplan { get; set; }
StatusColor应该是各行的颜色,但颜色始终是DataGrid的默认颜色。第一
public class CalenderWorkplanEntry
{
public string Fullname { get; set; }
public int UserId { get; set; }
public string StatusColor { get; set; }
public WorkPlanAppointment Appointment { get; set; }
}
触发器工作正常,但下次我将使用您的方法。我的问题是在这一行: 。我包含每一行的颜色,但每次显示默认颜色。 –
Arne
是的,那个'绑定'是无效的......你想绑定什么? CalenderWorkplanEntry中的 – Sheridan
具有字符串StatusColor,我想将StatusColor绑定到style.setter。 – Arne