各アイテムの背景色は、選択状態とデータコンテキストのブール値プロパティの2つに依存するリストがあります。私は背景色をバインドする方法を考え出しましたが、リストアイテムを選択するとすぐに私のカスタム背景が消えます。リストボックスアイテムの背景と選択色をWPFで
最終結果は、データコンテキストブール値が真である場合は緑のシェード、偽の場合は赤のシェードであることが理想的です(選択状態によって異なります)。
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