本ブログはアフィリエイト広告を利用しています。

WPF フォーカスが当たった時に出る枠線(点線)を消す方法

wpf_frame プログラミング

WPFで画面を作成していた時にFrameを使用していたのですが、起動時や画面遷移した時に枠線が出ていて見た目が悪すぎたので直しました。

画面構成

StackPanel内にFrameを使用するようなXAMLです。
画面の状態によって表示を切り替えるためにFrameを使用していましたが、サンプルなので空のパネルにFrame乗っけているだけです。

<Window x:Class="FocusTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:FocusTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel>
        <Frame Height="100" Background="OldLace">
        </Frame>
    </StackPanel>

</Window>

画像がこちらです。クリーム色の部分がFrameです。タブでフォーカス当てるとこのように枠線が出てきてしまいます。
ボタンとかなら許せたのですが背景にまでフォーカス当たるのは微妙な感じです。

wpf_frame

枠線を消す方法

枠線を消すにはApp.xamlを編集します。ここで以下のように設定すると全体的に適用されます。
TargetTypeをButton等に変更するとボタンのフォーカスも消すことができます。

<Application x:Class="FocusTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FocusTest"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="Frame">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</Application.Resources>
</Application>

以上です。

コメント

タイトルとURLをコピーしました