2013-05-13 2 views
1

У меня есть DataGrid, где клетки назначенных пользовательского класса, определенный ниже:WPF DataGrid привязки ячейка цвета фон свойство присвоенных данных объект

public class DataGridVariableWrapper : DependencyObject 
{ 
    public Variable TheVariable { get; set; } 

    public Brush BackgroundColor 
    { 
     get { return (Brush)GetValue(BackgroundColorProperty); } 
     set { SetValue(BackgroundColorProperty, value); } 
    } 
    public static readonly DependencyProperty BackgroundColorProperty = DependencyProperty.Register("BackgroundColor", typeof(Brush), typeof(DataGridVariableWrapper), new UIPropertyMetadata(null)); 

    public DataGridVariableWrapper(Brush backgroundBrush, Variable theVariable) 
    { 
     this.BackgroundColor = backgroundBrush; 
     this.TheVariable = theVariable; 
    } 

    public override string ToString() 
    { 
     return TheVariable.Value.ToString(); 
    } 

} 

Я пытаюсь иметь фон DataGridCell связанный к свойству BackgroundColor этого класса оболочки данных. Я пробовал:

<DataGrid.CellStyle> 
    <Style TargetType="DataGridCell"> 
     <Setter Property="Background" Value="{Binding DataGridVariableWrapper.BackgroundColor}" /> 
    </Style> 
</DataGrid.CellStyle> 

Но цвет фона остается неизменным. Я здесь что-то не так?

+0

Вы пробовали 'Value =" {Binding BackgroundColor} "'? – LPL

+0

Кажется, что это сработало, просто нужно выяснить немного пробела белого пробела, который появляется, а не заполнять полный фон. – user2371475

+0

Получил это, пришлось установить толщину рамки ячейки равным 0. Если вы хотите, чтобы ваш комментарий был ответом, я помечаю его как правильно. – user2371475

ответ

2

Если объект данных присвоен DataGridCell, вы найдете его в DataContext. Вот почему все, что вам нужно сделать в привязке, это указать желаемое свойство.

<Style TargetType="DataGridCell"> 
    <Setter Property="Background" Value="{Binding BackgroundColor}" /> 
</Style>