我有一個列表,其中每個項目的背景顏色應該取決於兩件事情:選擇狀態和數據上下文中的布爾屬性。我已經想出瞭如何綁定背景顏色,但只要我選擇列表項,我的自定義背景消失。在WPF中綁定列表框項目背景和選擇顏色
如果數據上下文布爾值爲true,則最終結果理想情況下(取決於選擇狀態)爲綠色,如果爲false,則爲紅色陰影。
MainWindow.xaml:
<ListBox x:Name="CrewList" ItemsSource="{Binding CrewList}" SelectedItem="{Binding SelectedCrew}" Style="{StaticResource EventOverviewListBox}" Grid.Column="1" Grid.Row="0">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Data.IsValid}" Value="true">
<Setter Property="Background" Value="{StaticResource StatusValid}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Data.IsValid}" Value="false">
<Setter Property="Background" Value="{StaticResource StatusInvalid}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="10,10,10,10" KeyboardNavigation.IsTabStop="False">
<TextBlock Text="{Binding Lane}" Margin="0,0,20,0" FontSize="20" />
<TextBlock Text="{Binding ClubName}" Foreground="Black" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
的App.xaml:
<SolidColorBrush x:Key="StatusValid">LawnGreen</SolidColorBrush>
<SolidColorBrush x:Key="StatusInvalid">Red</SolidColorBrush>
<Style x:Key="EventOverviewListBox" TargetType="ListBox">
<Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="Background" Value="Teal"/>
</Style>
<Style x:Key="EventOverviewListBoxItem" TargetType="ListBoxItem">
<Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
</Style>
我已經搜查,搜查,但沒有發現在過去的幾個小時什麼,所以我希望別人知道一種方式。
謝謝!
你說的 「選擇狀態」 是什麼意思?如果我理解正確,如果沒有選擇該項目,背景應該是默認的背景,但是如果該項目被選中,則它是StatusValid或StatusInvalid。我對嗎? – GregaMohorko