Wpf

WPFカスタムキーボードフォーカススタイル(FocusVisualStyle)



Wpf Custom Keyboard Focus Style



WPFの組み込みのキーボードフォーカススタイルは、従来のコントロールスタイルと一致しますが、スタイルをカスタマイズする強力な機能により、WPFを使用すると、従来のコントロールスタイルとはまったく異なるUIを簡単に作成できます。現時点では、組み込みのキーボードフォーカススタイル(FocusVisualStyle)は非常に比類のないものであり、変更するのがはるかに快適になります。たとえば、UWPスタイルに変更します。

この記事では、WPFカスタムキーボードフォーカススタイルのカスタマイズについて説明します ピット




WPF
▲WPF独自のキーボードフォーカススタイル

UWP
▲UWPダークテーマキーボードフォーカススタイル



実はマイクロソフト公式文書 コントロールのフォーカスとFocusVisualStyleのスタイリング-MicrosoftDocs 指示付きFocusVisualStyle、しかし- カスタマイズは一切ありません 大丈夫!

そこで、デフォルトのスタイルを上書きするスタイルを作成しようとしました。

<Style x:Key='{x:Static SystemParameters.FocusVisualStyleKey}'> <Setter Property='Control.Template'> <Setter.Value> <Rectangle Margin='-3' StrokeThickness='3' Stroke='Gray' SnapsToDevicePixels='true'/> Setter.Value> Setter> Style>

それを実行した後、結果は完全に効果がありません...



画像

StackOverflowの誰かもこれを言った: xaml-WPFユーザーコントロールのFocusVisualStyleを再定義する方法-スタックオーバーフローRohit Vats Buttonについては個別に渡す必要があると述べました設定が有効になり、コードが回答に投稿されます。

ただし、同じコードをプロジェクトに適用すると、以前に定義したキーレススタイルも無効であることがわかります。

画像

私のコードはこのようなもので、以前に定義したキーレススタイルを使用しようとしましたが、機能しませんでした。

<Style x:Key='{x:Static SystemParameters.FocusVisualStyleKey}'> <Setter Property='Control.Template'> <Setter.Value> <Rectangle Margin='-3' StrokeThickness='3' Stroke='Gray' SnapsToDevicePixels='true'/> Setter.Value> Setter> Style> <Style TargetType='Button' BasedOn='{StaticResource {x:Type Button}}'> <Setter Property='FocusVisualStyle' Value='{StaticResource {x:Static SystemParameters.FocusVisualStyleKey}}'/> Style>

では、アプリケーション全体を一度に定義する方法はありますか?

答えは-

画像

wpf-アプリケーション全体でFocusVisualStyleを変更します-スタックオーバーフロー また、これを認めました。


したがって、WPFプログラムをカスタマイズする場合FocusVisualStyleスタイルについては、最初から始めて、各下部スタイルを定義するときに設定することをお勧めしますFocusVisualStyle、他のスタイルは、定義時に下部スタイルから継承されます。


参照