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