私は.Netに移行するAccess開発者であり、WPFプロジェクトがあります。私はAccessのサブフォームに慣れているので、このように動作するユーザーコントロールを作成しました(それ自体が問題になる可能性がありますが、現時点では対処していません)。
この特定のユーザーコントロール(サブフォーム)には、コードビハインドのオブジェクトにバインドされたいくつかのリストボックスがあります(VB-私もその議論に参加していません;私はVBAに精通しています)。これらのリストボックスは、「IsAssigned」と呼ばれるブール値にバインドされています。これらのリストボックスの項目を、その値に応じて緑がかった色または赤みがかった色に変更するスタイルを作成しました。これは機能しています。
次に、値を変更してウィンドウのハイライト動作をオーバーライドしたいと思い、SystemColors.HighlightColorとControlBrushKeyについて学びました。問題は、HighlightColorとControlBrushKeyの色を「IsAssigned」の値に依存させたいということです。何かが欠けていない限り、トリガーをネストすることはできないようです。次のコードでは、これを理解している場所を示すために、ハイライト値を緑に設定しています。
したがって、アイテムを選択すると、テキストが太字になり、境界線が黒になり、「IsAssigned」の値に応じて緑または赤の単色が維持されます。同じアイテムがハイライトされたアイテムである場合、フォアカラーを白にし、境界線を太くしたいと思います。
優しくしてください-私は1つ以上の点で初心者です。
<UserControl.Resources>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ColorTrueAndFalse">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightColor}" Color="Green" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" />
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="BorderBrush" Value="Black" />
</Trigger>
<DataTrigger Binding="{Binding IsAssigned}" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="LightGreen" Offset="0" />
<GradientStop Color="Green" Offset="1" />
<GradientStop Color="LawnGreen" Offset="2" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsAssigned}" Value="False">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="LightCoral" Offset="0.5" />
<GradientStop Color="Coral" Offset="1" />
<GradientStop Color="Red" Offset="2" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>