リストビューで選択した項目に関する詳細情報を表示するために、次のXAMLが使用されています。選択した項目がエラーメッセージを表している場合を除いて、テキストの背後に標準情報の色を表示するようにしたい。以下のコードはそのまま動作せず、常に情報の色が表示されます。ルート<Rectangle />
の要素にFill
を指定しないとうまくいきます。DataTriggerでバインドされたプロパティをオーバーライドするには
<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}"
RadiusX="4" RadiusY="4">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentMessage.Severity"
Value="Error" >
<Setter Property="Fill" Value="#20FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
スニペットは、それを反映していないが、実際のコードでは、重要度のためにかなりの数の可能なステータスレベルを持っているので、私は、各可能な重症度のトリガを定義する必要はありません。私が欲しいロジックは、「重大度がエラーでない限り情報カラーを使用し、次に赤を使用する」です。
私はWPFのいくつかの基本的な側面を誤解していますが、それを特定することはできません。私が指定したデータトリガが、条件が真であるときに既存のFill値を上書きするように、誰かを正しい方向に向けることができますか?
うまくいきました。しかし...なぜ説明できますか? RectangleのFillプロパティは同等であるように思えます。 –
できません。これは経験からのものです。私はそれがオブジェクト自体に設定されていると思うと、スタイル内のものを上書きします。 –