私は多くの画面を持つ WPF アプリケーションに取り組んでおり、すべての画面には多くのコントロールがあります。どのコントロールにフォーカスがあるかを判断することが非常に難しくなりました。
したがって、現在フォーカスされているコントロールを強調表示したいと思います。テキストボックス、ボタン、コンボボックス、リストボックス、またはグリッドの可能性があります。
スタイルとトリガーを使用してこれを行うことができればより良いでしょう。
ありがとう
私は多くの画面を持つ WPF アプリケーションに取り組んでおり、すべての画面には多くのコントロールがあります。どのコントロールにフォーカスがあるかを判断することが非常に難しくなりました。
したがって、現在フォーカスされているコントロールを強調表示したいと思います。テキストボックス、ボタン、コンボボックス、リストボックス、またはグリッドの可能性があります。
スタイルとトリガーを使用してこれを行うことができればより良いでしょう。
ありがとう
適切なイベントのトリガーを使用する必要があります。あなたの場合、それはIsFocused
です。簡単な例:
<Trigger Property="IsFocused" Value="true">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="1" />
</Trigger>
Style
このスタイルを特定のコントロール タイプに適用する場合は、 タグを使用する必要があります(TargetType="{x:Type TextBox}"
たとえば、 を使用します)。
アプリケーションのすべてのコントロールタイプに適用する場合は、そのような種類のトリガーのみを持つ基本スタイルを使用し、BasedOn
属性を使用してカスタム スタイルでそれを継承することを検討する必要があります。
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseFocusStyle}">
これを行う方法の良い例は、SO の質問です。
この動作の装飾を試して作成することもできます。サードパーティのオープンソースライブラリを自由に使用できる場合は、codeplexでのこの実装を確認してください。コードを調べて、独自の装飾を実装する方法を理解することもできます。
http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation
他の解決策についての詳細を持っている別の同様の質問-現在焦点を合わせている要素の周りに真っ赤なボックスを配置する再利用可能な方法?