У меня есть ListBox, где цвет фона элементов связаны с какой-то свойство записи:Keeping coustum стиль ListBoxItem при выборе
<ListBox ItemsSource="{Binding ObservableCollectionOfFoos}" >
<ListBox.ItemContainerStyle >
<Style TargetType="ListBoxItem" >
<Setter Property="Content" Value="{Binding SomePropertyOfFoo}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding AnotherPropertyOfFoo}" Value="true">
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Это работает, но когда я мыши или выбрать пункт повестки дня, фоновые изменения (неудивительно, возможно,) по умолчанию мыши над/выбранным цветом.
Я новичок в WPF, и я не уверен, что я буду делать это правильно, я подумал, может быть, мне нужно использовать ItemContainerStyleSelector, но я смущен относительно того, как его использовать, и кажется глупым создать класс именно для этой маленькой вещи ...
То, что я также думал, было создать IValueConverter от булева до цвета, а затем привязать его, не используя DataTrigger в качестве другого подхода , громче, чем быть более элегантным? будет ли кто-то помогать мне в решении этой проблемы?
редактировать:
Было бы хорошо, если бы я мог изменить цвет фона выбранного элемента к другому цвету на основе AnotherPropertyOfFoo, если это не слишком много, чтобы спросить
редактировать 2 (расширение комментировать @Sheridan ответ):
это не работает
<ListBox>
<ListBox.Items>
<ListBoxItem>one</ListBoxItem>
<ListBoxItem>two</ListBoxItem>
<ListBoxItem>three</ListBoxItem>
<ListBoxItem>four</ListBoxItem>
</ListBox.Items>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="Green" />
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />
</Style.Resources>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Привет, спасибо за ответ, но это, похоже, не имеет никакого эффекта. – pseudoDust
Прошу прощения, я не уверен, что я делаю неправильно, но это просто не имеет никакого эффекта. Я изолировал его в простейшем примере, который мог бы создать, и он все еще не работает, см. Редактирование моего сообщения для кода, который я использовал, может быть, вы можете найти мою ошибку. – pseudoDust