2009-02-12 4 views
1

У меня есть DataGrid, чей ItemsSource привязан к изменяющейся коллекции Observable. Внутри этой коллекции находится бизнес-объект. Основываясь на некоторых значениях свойств бизнес-объекта, я хотел бы иметь возможность изменять цвет текста для каждого элемента, отображаемого в моем DataGrid, после создания ItemsSource.Silverlight DataGrid styling

Кто-нибудь сделал это раньше или столкнулся с чем-то подобным? Заранее спасибо.

<DataTemplate x:Key="MyTemplate"> 
     <Grid x:Name="LayoutRoot"> 
      <TextBlock Text="{Binding MyText}" 
         Foreground="{Binding MyStatus, Converter={StaticResource colorConverter}}" /> 
     </Grid> 
    </DataTemplate> 

Я добавил выше код и вставил TemplateColumn в сетку, как показано ниже:

<data:DataGridTemplateColumn Header="Testing" 
               CellTemplate="{StaticResource MyTemplate}"/> 

код работает отлично и вытаскивает правильный текст, но конвертер никогда не будет срабатывать, а Binding переднего плана никогда не вызывается от попадания на него.

Любые идеи?

ответ

0

Да. Используйте привязку Value Converter.

<UserControl.Resources> 
    <myconverters:BackColor x:Key="BackColor" /> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot" Background="{Binding SomeValue, Converter={StaticResource BackColor}" > 
</Grid> 

Затем у вас есть класс преобразователя IValueConverter и возвратите объект Brush. Вы, как правило, не должны осуществлять ConvertBack()

+0

Я бы отметить это как ответ, но вы ответили о сетке, а не в DataGrid. У меня есть настройка моего конвертера, поэтому я сейчас работаю над этим стилем и также отвечу на решение. – strickland

+0

Я больше думал о том, что сетка будет жить внутри ItemTemplate. –

0

Добавление к ответу Британской Колумбии:

Вы можете сделать DataGridTemplateColumn и указать шаблон данных для ячеек в столбце. В шаблоне данных вы можете привязать цвет текста.

<swcd:DataGrid ... > 
    <swcd:DataGrid.Columns> 
     <swcd:DataGridTemplateColumn Header="MyColumn" CellTemplate="{StaticResource MyColumnDataGridCellTemplate}"/> 
     ... 

ресурсов:

<DataTemplate x:Key="MyColumnDataGridCellTemplate"> 
    <Grid> 
     <TextBlock Text="{Binding someproperty}" Foreground="{Binding someotherproperty, Converter={StaticResource MyConverter}}"/> 
      ...