【C#】WPFのxamlで定義されているTriggerは、BorderのMouseOverのように、なぜ役に立たない場合があるのか
2981 ワード
WPFを初めて学び、StyleのTriggerを定義することで表示するスタイルを変更できるコントロールがあることを知っていますが、Triggerがトリガーされたのに、中にはSetterが設定したスタイルが効果的ではないという問題によく遭遇します.実は主な原因は、スタイルの繰り返し定義によるものです.
例を挙げます.
このコードは、実行後、マウスが何度上を通っても外観スタイルは変わりません.これは、最外層のBorderでBorderBrushとBroderThicknessを定義しているので、Triggerの2つのsetterは何の役にも立たないが、setterを追加している場合は、Propertyを背景色に設定します.再実行すると、このSetterが機能していることがわかります.これは、外層のBorderラベルにBackgroundプロパティが定義されていないため、機能しています.
コードを変更する方法を知っておくべきです
なお、IsMouseOverがTrueであるTriggerを定義すると、FalseであるTriggerを定義することも望ましい.実際には、Trueとして1つだけ定義されている場合は、現実的な効果はありません.
次のブログでは、WPFで作ったQQインタフェースを模したチュートリアルをお届けします.
例を挙げます.
このコードは、実行後、マウスが何度上を通っても外観スタイルは変わりません.これは、最外層のBorderでBorderBrushとBroderThicknessを定義しているので、Triggerの2つのsetterは何の役にも立たないが、setterを追加している場合は、Propertyを背景色に設定します.再実行すると、このSetterが機能していることがわかります.これは、外層のBorderラベルにBackgroundプロパティが定義されていないため、機能しています.
コードを変更する方法を知っておくべきです
なお、IsMouseOverがTrueであるTriggerを定義すると、FalseであるTriggerを定義することも望ましい.実際には、Trueとして1つだけ定義されている場合は、現実的な効果はありません.
次のブログでは、WPFで作ったQQインタフェースを模したチュートリアルをお届けします.