У меня есть 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
Да, это 'Binding' недействительно ... к чему вы пытаетесь привязаться? – Sheridan
в CalenderWorkplanEntry имеет строку StatusColor, и я хочу привязать StatusColor к style.setter. – Arne