5

私は多くの画面を持つ WPF アプリケーションに取り組んでおり、すべての画面には多くのコントロールがあります。どのコントロールにフォーカスがあるかを判断することが非常に難しくなりました。

したがって、現在フォーカスされているコントロールを強調表示したいと思います。テキストボックス、ボタン、コンボボックス、リストボックス、またはグリッドの可能性があります。

スタイルとトリガーを使用してこれを行うことができればより良いでしょう。

ありがとう

4

3 に答える 3

8

適切なイベントのトリガーを使用する必要があります。あなたの場合、それは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 の質問です

于 2012-06-14T06:01:28.420 に答える
0

この動作の装飾を試して作成することもできます。サードパーティのオープンソースライブラリを自由に使用できる場合は、codeplexでのこの実装を確認してください。コードを調べて、独自の装飾を実装する方法を理解することもできます。

http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation

ここに画像の説明を入力してください

他の解決策についての詳細を持っている別の同様の質問-現在焦点を合わせている要素の周りに真っ赤なボックスを配置する再利用可能な方法?

于 2012-06-14T06:42:05.610 に答える
0

すべてのコントロールのカスタム スタイルで表示状態を使用することをお勧めします。すべての標準コントロールは、この表示状態をサポートします。たとえば、ボタンの MSDN スタイルを確認すると、フォーカスの視覚的な状態があることがわかります。このMSDN の記事も役立つ場合があります。

于 2012-06-14T06:01:47.110 に答える