0

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

丸みを帯びたタブの方が見栄えが良いと思うので、タブ ビュー コントロールでタブ ヘッダーに丸みを帯びた角を使用するようにします。

これを行うために、Expression Blend の [Edit Copy] コマンドを使用して、タブの既定のコントロール テンプレートを変更しました。次に、タブ ヘッダーの「境界線」の角の半径を設定します。

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

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

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

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

  1. ハイコントラストモードが有効になっているときに色が正しく更新されるように、リテラル値ではなくシステムリソースを指すようにグラデーションを変更する方法はありますか?
  2. または、新しいコントロール テンプレートを作成せずに、タブ ヘッダーの境界線の角の半径を設定する方法はありますか?

編集:

自分が何を求めているのかをもう少し明確にする必要があると思います。タブ ヘッダーの角が丸くなっていることを除いて、既定のタブ コントロールとまったく同じように動作するタブ コントロールが必要です。既定では、タブ コントロールはタブの背景にグラデーションを使用し、ユーザーがマウスをそれらの上に置くと非アクティブなタブを「強調表示」します。また、OS がハイ コントラスト モードに切り替わると、正しく応答し、色とマウス オーバー動作が変わります。私はまだこの動作が必要です。

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

4

2 に答える 2

1

TabItemのカスタムテンプレートを作成せずに、丸みを帯びたタブコーナーを作成する方法はありません。ブレンドで「コピーの編集」を行うと、現在のウィンドウのテーマに基づいてデフォルトのテンプレートが作成されると思います(ただし、間違っている可能性があります。controltemplateダンプを実行すると、システムによって決定される現在のコントロールテンプレートが取得されます。テーマ。presentation.aeroなどのように)。ただし、変更時にシステムが使用する色を指定する場合は、テンプレートで次のように色を分割します。

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

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

于 2008-11-25T16:25:53.293 に答える
0

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

Family.Show と、彼らが黒と銀のテーマをどのように行うかを見てみましょう。

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

于 2008-11-22T02:30:51.403 に答える