none
フォーカスが当たったときの点線枠を根こそぎ取り除く方法はありますか? RRS feed

  • 質問

  • お世話になっております。

       <Setter Property="FocusVisualStyle" Value="{x:Null}" />

    と書けば、点線枠が描画されないことはわかっていますが、

    あちこちに書き殴らないといけないようです。

    どこかに1回書いてシャットアウトする方法はないでしょうか?

     

    2010年6月4日 12:36

回答

  • BasedOnを使って、点線枠のないスタイルを継承させるのが最も合理的でしょうか?
    スタイルをデフォルトでマージする機能は私が調べた範囲内でありませんでした。たぶん無いと思われますので、その方法になると思います。
    ところでControlTemplateを設定されていますので、いっそのこと点線枠を出ないようにしたカスタムコントロールとして作成されてしまってもいいかもしれません。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク Yo48 2010年6月7日 12:06
    2010年6月7日 5:45
    モデレータ

すべての返信

  • とりあえず、App.xamlにButtonコントロールであれば以下のように書くことにより、アプリケーション全体におけるButtonコントロールにスタイルが適用されます。

    <Application.Resources>
       <Style TargetType="Button">
          <Setter Property="FocusVisualStyle" Value="{x:Null}" />
       </Style>
    </Application.Resources>

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年6月4日 15:30
    モデレータ
  • trapemiyaさん、ありがとうございます。

    そうなんですが、点線枠が邪魔になるのは、Templateを使っているときで、

    Templateを使うと、その中でもNullを指定しないと点線枠が復活してしまいます。

    <Window.Resources>
      <Style TargetType="Button">
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
      </Style>
    
      <Style x:Key="MyButton" TargetType="Button">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="Button">
              <Grid Name="Target" Background="Gold"/>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Window.Resources>
    
    <StackPanel>
        <Button Name="ButtonA" Margin="5" Height="40" Style="{StaticResource MyButton}"/>
        <Button Name="ButtonB" Margin="5" Height="40"/>
      </StackPanel>
    </StackPanel>
    

    BasedOnを使って、点線枠のないスタイルを継承させるのが最も合理的でしょうか?

    書く量はあまり変わらないですが。

     

    2010年6月5日 22:23
  • BasedOnを使って、点線枠のないスタイルを継承させるのが最も合理的でしょうか?
    スタイルをデフォルトでマージする機能は私が調べた範囲内でありませんでした。たぶん無いと思われますので、その方法になると思います。
    ところでControlTemplateを設定されていますので、いっそのこと点線枠を出ないようにしたカスタムコントロールとして作成されてしまってもいいかもしれません。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク Yo48 2010年6月7日 12:06
    2010年6月7日 5:45
    モデレータ
  • trapemiyaさん、

    ご返事ありがとうございました。

    カスタムコントロールにしたら、個々に定義する必要があると理解しました。

    2010年6月7日 12:11