Чтобы решить эту проблему, мне пришлось создать string DependencyProperty
с именем Background
для пользовательского класса столбца, который наследуется от DataGridTemplateColumn
. Кроме того, в поведении я должен был проверить, какой тип столбца.
Раньше я просто помещал столбец в обработчике события CollectionChanged в DataGridBoundColumn. Теперь я проверяю, действительно ли это тот тип или его DataGridTemplateColumn. DataGridTemplateColumn имеет другой способ проверки пути привязки, разница показана ниже
DataGridBoundColumn: boundColumn.Binding.Path.Path
DataGridTemplateColumn: boundColumn.SortMemberPath
Последний трюк, который мне пришлось сделать, - это изменить структуру DataTemplate
так, чтобы она теперь выглядела так, как показано ниже, в основном настройка цвета другим способом - это все.
<DataTemplate>
<Grid>
<Border>
<Border.Background>
<SolidColorBrush Color='{0}' />
</Border.Background>
<TextBlock VerticalAlignment='Center' Text='{Binding Path=Variable}' />
</Border>
</Grid>
</DataTemplate>