A ValueConverter
будет работать. Другой вариант - использовать DataTrigger
в стиле ListBoxItem
. Может быть, что-то вроде этого:
<Style x:Name="MinDateTimeListBoxStyle" TargetType="ListBoxItem">
<Style.Triggers>
<Setter Property="Background" Value="Gray" />
<DataTrigger Binding="{Binding Path=Done}"
Value="{x:Static sys:DateTime.MinValue}">
<Setter Property="Background" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
Это установит фон на Серый, когда значение Done
не DateTime.MinValue
. Я не думаю, что есть способ сделать сравнение не равным в триггере, поэтому он устанавливает фон по умолчанию на Серый и меняет его на белый, только если Done
еще не изменился. Вероятно, было бы лучше использовать правильный цвет для фона вместо белого (возможно, получить значение фона родителя?), Но это должно дать вам кое-что для начала.
Обновление : чтобы применить этот стиль к элементам только определенных списков, присвойте стилю имя и установите ItemContainerStyle
соответствующим образом:
<ListBox x:Name="StyledListBox"
ItemContainerStyle="{StaticResource MinDateTimeListBoxStyle}" />
<ListBox x:Name="NormalListBox" />