Я пытаюсь сравнить содержимое ячеек данных из разных строк (сравнивая содержимое ячейки из строки x с соответствующей ячейкой (в том же столбце) в строке 0. Я использую DataTrigger в стиле DataGridCell и связываю свойство содержимого ячейки который содержит действительное значение, а во-вторых, я сам связываю сетку данных.В конвертере я делаю сравнение между значением из ячейки и значением из переданной сетки данных в строке 0. Это прекрасно работает для известных типов столбцов, таких как datagridText столбец или флажок DataGrid, потому что тогда я могу установить путь к фактическому свойству, которое содержит значение (Content.Text для текстового столбца и Content.IsChecked для столбца флажка) (см. ниже). Но я застрял с этим стратегия для TemplateColumn, в которой я комбинирую, например, CheckBox и TextBox, или ComboBox. В этом случае я не могу привязаться к свойству Content.Text или Content.IsChecked. Привязка к содержимому без свойства не работает, потому что триггер не сработал и конвертер не ударил.
Итак, каков наилучший подход для достижения этой цели, конечной целью является условное форматирование ячеек с отклонением содержимого от соответствующего столбца в строке 0 независимо от типа содержимого.
<Style TargetType="{x:Type DataGridCell}" x:Key="MyCellStyle">
<Style.Triggers>
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding UpdateSourceTrigger="PropertyChanged" Converter="{StaticResource policyComparisonConverter}">
<Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=DataGrid}"/>
<Binding Path="Content.Text" RelativeSource="{RelativeSource Self}"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>