Взгляните на следующий XAML сниппета:IValueConverter только вызывается при прокрутке на DataGrid
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Block.TextAlignment" Value="Center"/>
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush>
<SolidColorBrush.Color>
<MultiBinding Converter="{StaticResource VAPBrushConverter}">
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type DataGridCell}}"/>
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}"/>
</MultiBinding>
</SolidColorBrush.Color>
</SolidColorBrush>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
IValueConverter вызывается только когда я прокручиваю на сетке. Внутри DataGridCell есть TextBlock, и единственный раз, когда вызывается IValueConverter, это когда свойство TextBlock.Text - DependencyProperty.UnsetValue.
Может ли кто-нибудь сказать мне, когда вызывается IValueConverter, и если что-то я могу сделать с моим кодом в настоящее время, который может решить эту проблему? Чтобы уточнить, проблема заключается в том, что фон устанавливается только IValueConverter, когда я просматриваю DataGrid.
У меня такая же проблема. –
Вы преувеличиваете это с помощью MultiBindings и Converters. Создайте правильную ViewModel для ваших строк и получите некоторое «более простое» значение для привязки к или использования «DataTriggers». –
@HighCore Я понимаю, что вы говорите, но мои модели ViewModels преобразуются в JSON напрямую для использования в другом API, поэтому я не могу добавить случайные свойства только для своего внешнего приложения. Я мог бы создать своего рода декоратор, но я бы предпочел использовать конвертер для согласованности. – Sherlock