次の方法で共有


方法: コントロールに FocusVisualStyle を適用する

この例では、FocusVisualStyle プロパティを使用して、リソースにフォーカス表示スタイルを作成し、そのスタイルをコントロールに適用する方法を示します。

次の例では、コントロールがユーザー インターフェイス (UI) にフォーカスされている場合にのみ適用される追加のコントロール合成を作成するスタイルを定義します。 これは、ControlTemplateを使用してスタイルを定義し、FocusVisualStyle プロパティを設定するときにそのスタイルをリソースとして参照することによって実現されます。

境界線に似た外部の四角形は、四角形領域の外側に配置されます。 特に変更しない限り、スタイルのサイズ変更では、フォーカス表示スタイルが適用される四角形コントロールの ActualHeightActualWidth が使用されます。 次の使用例は、Margin の負の値を設定して、フォーカスされたコントロールの外側に境界線を少しだけ表示します。

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
  <Page.Resources>
    <Style x:Key="MyFocusVisual">
      <Setter Property="Control.Template">
        <Setter.Value>
          <ControlTemplate>
            <Rectangle Margin="-2" StrokeThickness="1" Stroke="Red" StrokeDashArray="1 2"/>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </Page.Resources>
  <StackPanel Background="Ivory" Orientation="Horizontal">
    <Canvas Width="10"/>
    <Button Width="100" Height="30" FocusVisualStyle="{DynamicResource MyFocusVisual}">
      Focus Here</Button>
    <Canvas Width="100"/>
    <Button Width="100" Height="30" FocusVisualStyle="{DynamicResource MyFocusVisual}">
      Focus Here</Button>
  </StackPanel>
</Page>

FocusVisualStyle は、明示的なスタイルまたはテーマ スタイルから取得されるコントロール テンプレート スタイルに対する追加です。コントロールのプライマリ スタイルは、ControlTemplate を使用し、そのスタイルを Style プロパティに設定することで引き続き作成できます。

フォーカス可能な要素ごとに異なるスタイルを使用するのではなく、テーマまたは UI 全体でフォーカス表示スタイルを一貫して使用する必要があります。 詳細については、「コントロールのフォーカスのスタイル設定 」および「FocusVisualStyle」を参照してください。

こちらも参照ください