WPFタブビュー、カスタムテンプレート、およびアクセシビリティ

StackOverflow https://stackoverflow.com/questions/310749

  •  10-07-2019
  •  | 
  •  

質問

WPFタブビューコントロールに問題があり、ここにいる誰かが私を助けてくれることを望んでいました。

タブビューコントロールがタブヘッダーに丸い角を使用するようにしたいのは、丸いタブの方が見やすいと思うからです。

これを行うには、「コピーの編集」を使用してタブのデフォルトのコントロールテンプレートを変更しました。 Expression Blendのコマンド。次に、「境界線」の角の半径を設定します。タブヘッダーの。

ただし、このアプローチの問題は、「コピーの編集」ということです。コマンドは、「アクティブ」を表示するために使用されるグラデーションブラシのリテラルカラー値を生成します。および「マウスオーバー」タブの背景。

これにより、「ハイコントラスト」が発生したときに問題が発生します。モードが有効になっています。他のコントロールのようにコントラストの高い配色に切り替えるのではなく、テンプレートが変更されたタブは、アクティブタブおよびマウスオーバータブのグラデーションブラシで指定されたリテラルカラー値を使用します。これにより、タブヘッダーのテキストが「白」に変更されるため、これらのタブが読み取れなくなります。 OSが高コントラストモードに切り替わったとき(灰色の背景に白いテキストが読めない)。

高コントラストモードが有効になっている場合、正方形のタブに戻ることができると考えました。これにより、この特定の問題が修正されます。ただし、カスタムWindowsテーマがインストールされているユーザーでも同様の問題が発生すると思います。

だから、私が思っているのは:

  1. グラデーションを変更して、リテラル値ではなくシステムリソースを指すようにする方法はありますか?
  2. または、新しいコントロールテンプレートを作成せずに、タブヘッダーの境界にコーナー半径を設定する方法はありますか?

編集:

探しているものについて、もう少し明確にすべきだと思います。 タブヘッダーの角が丸いことを除いて、デフォルトのタブコントロールとまったく同じように動作するタブコントロールが必要です。デフォルトでは、タブコントロールはタブの背景にグラデーションを使用し、「ハイライト」します。ユーザーがマウスオーバーしたときに非アクティブなタブ。また、OSが高コントラストモードに切り替わると、正しく応答し、色とマウスオーバー動作を変更します。まだこの動作が必要です。

Blendでデフォルトのコントロールテンプレートのコピーを作成すると、高コントラストモードでは正しく機能しないコントロールテンプレートが作成されます。生成されたコントロールテンプレートをハイコントラストモードで正しく動作させるために、コントロールテンプレートまたはウィンドウ内のコードに対して行う必要があることを知りたい。

役に立ちましたか?

解決

TabItemのカスタムテンプレートを作成せずに、丸いタブコーナーを作成する方法はありません。 「コピーの編集」を行うブレンドでは、あなたが持っているウィンドウの現在のテーマに基づいてデフォルトのテンプレートを作成すると信じています(ただし、間違っている可能性があります。エアロまたはそのようなもの)。ただし、変更時にシステムが使用する色を指定する場合は、テンプレートで次のように色を指定します。

Color="{DynamicResource {x:Static SystemColors.XXXX}"

これは、システムの色を使用してコントロールのスタイルを設定し、システムテーマの変更を反映するように更新されます。

他のヒント

Blendのウィンドウにシンプルなスタイルコントロールを追加します。これにより、タブコントロール用のSimpleStyles.xamlが追加されます。

Family.Showを見て、彼らが黒と銀のテーマをどのように行うかを見てください。

これら2つの間で、タブコントロールをカスタマイズし、さまざまなテーマを処理する方法の良い例があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top