1

主にコンボボックス、テキストボックス、およびチェックボックスを備えたウィンドウがいくつかあります。1 つをクリックしてフォーカスを得ると、カラフルなボックス (ボスの命令) で輪郭を描く方法が必要です。これらすべてのコントロールの既定のスタイルをオーバーライドするよりも簡単にこれを行う方法はありますか? 私はそれをやったことがないので、それを理解するには私の側で多くのことをいじる必要があります.

4

1 に答える 1

5

異なるフォーカス四角形スタイルを必要とするコントロールにFocusVisualStyleを追加してみてください。

上記リンクより

2 番目のメカニズムは、 FocusVisualStyleプロパティの値として別のスタイルを提供することです。「フォーカス ビジュアル スタイル」は、コントロールまたは他の UI 要素のビジュアル ツリーを置き換えて変更するのではなく、コントロールの上に描画する装飾用の別のビジュアル ツリーを作成します。

あなたのウィンドウのXamlでこのようなもの

<Window.Resources>
    <Style x:Key="NewFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border>
                        <Rectangle Stroke="Red"  Margin="2" StrokeThickness="1"  StrokeDashArray="1 2" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

または Application.Xaml ファイル。

<Application.Resources>
    <Style x:Key="NewFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border>
                        <Rectangle Stroke="Red"  Margin="2" StrokeThickness="1"  StrokeDashArray="1 2" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>

使用法:

<ComboBox FocusVisualStyle="{StaticResource NewFocusVisual}"  Height="23" HorizontalAlignment="Left" Margin="238,102,0,0" Name="ComboBox1" VerticalAlignment="Top" Width="120" />
<CheckBox FocusVisualStyle="{StaticResource NewFocusVisual}" Content="CheckBox" Height="16" HorizontalAlignment="Left" Margin="238,71,0,0" Name="CheckBox2" VerticalAlignment="Top" />
<TextBox FocusVisualStyle="{StaticResource NewFocusVisual}" Height="23" HorizontalAlignment="Left" Margin="238,144,0,0" Name="TextBox1" VerticalAlignment="Top" Width="120" />

フォーカス イベントの種類ごとにフォーカス四角形を変更する場合、Microsoft は次のように述べています。

Microsoft から: フォーカス ビジュアル スタイルは、キーボード フォーカスに対してのみ機能します。そのため、フォーカス ビジュアル スタイルは一種のアクセシビリティ機能です。マウス、キーボード、またはプログラムによるものであるかにかかわらず、任意のタイプのフォーカスの UI を変更する必要がある場合は、フォーカスのビジュアル スタイルを使用しないでください。代わりに、一般的なフォーカス プロパティの値から動作するスタイルまたはテンプレートでセッターとトリガーを使用する必要があります。 IsFocused や IsFocusWithin など。


TextBox が他のコントロールをチェックしていない場合に機能するため、これを試してみてください

<Application.Resources>
    <Style TargetType="TextBox" >
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="True">
                <Setter Property="Control.BorderBrush" Value="Red"  />
                <Setter Property="Control.BorderThickness" Value="3" />
            </Trigger>
        </Style.Triggers>
    </Style>

</Application.Resources>
于 2012-05-27T04:08:42.450 に答える