2008-11-22 98 views
0

我遇到了WPF選項卡視圖控件的問題,我希望這裏有人能夠幫助我。WPF選項卡視圖,自定義模板和輔助功能

我希望我的標籤視圖控件對標籤標題使用圓角,因爲我認爲圓形標籤看起來更好。

爲此,我使用Expression Blend中的「編輯複製」命令修改了選項卡的默認控制模板。然後,我只需爲標題標題的「邊框」設置角落半徑。

但是,這種方法的問題在於「編輯複製」命令最終會生成用於顯示「活動」和「鼠標懸停」選項卡背景的漸變畫筆的文字顏色值。

當「hi contrast」模式啓用時,會導致問題。與其他控件一樣,切換到hi對比顏色方案時,帶修改模板的選項卡將使用漸變畫筆中爲活動和鼠標懸停選項卡選項卡指定的文字顏色值。這最終導致這些選項卡無法讀取,因爲當操作系統切換到高對比度模式(灰色背景上的白色文本不可讀)時,選項卡標題上的文本會變爲「白色」。

我想我可以在高對比度模式啓用時切換回正方形標籤,這將解決這個特殊問題。不過,我想象一下安裝了自定義Windows主題的用戶會遇到類似的問題。

所以,我想知道的是:

  1. 有沒有什麼辦法可以改變梯度指向系統資源,而不是字面值,使得它的顏色會被更新正確時高對比度模式已啓用
  2. 或者,有沒有辦法讓我在標籤頁眉的邊框上設置角落半徑而不創建新的控件模板?

編輯:

我想我應該有一點更加明確什麼我要找的。 我想要一個選項卡控件,其行爲與默認選項卡控件完全相同,只是標籤頁眉角已舍入。默認情況下,選項卡控件將爲選項卡背景使用漸變,並在用戶將鼠標懸停在其上時突出顯示非活動選項卡。它也會正確響應並改變它的顏色,當操作系統切換到高對比度模式時,鼠標懸停在行爲上。我仍然需要這種行爲。

在Blend中創建默認控件模板的副本將創建一個控件模板,該模板在高對比度模式下無法正常工作。我想知道我需要對控件模板或我的窗口中的代碼執行何種操作,以使生成的控件模板在高對比度模式下正常工作。

回答

1

如果不爲TabItem創建自定義模板,則無法制作圓角的製表符角。在混合中做「編輯複製」我相信根據當前你擁有的Windows主題創建了默認模板(我可能會錯誤,但我相信你做了一個控制模板轉儲,它得到的是由系統決定的當前控制模板主題,就像presentation.aero或類似的東西)。但是,如果你要提供,該系統將使用顏色時的變化則sepcify他們像這樣在你的模板:

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

這將使用該系統的顏色樣式的控制和將被更新,以反映變化系統主題。

+0

添加對系統畫筆的引用不是問題(我想了很多)。問題是我無法使用系統刷子重新創建控件的默認行爲。 – 2008-11-26 01:24:49

0

在Blend中的窗口中添加一個簡單的樣式控件。這將添加SimpleStyles.xaml,其中包括一個用於選項卡控件的選項。

看看Family.Show以及他們如何做黑色和銀色的主題。

在這兩者之間,你應該有一個很好的例子來說明如何自定義選項卡控件和處理不同的主題。

+0

這只是創建一個新的選項卡控件與控制模板配置爲刪除所有樣式。 這不是我想要的。我想要所有常規造型,但我也希望角落四捨五入。但是,我也希望應用程序在啓用「高對比度」模式時可用。 – 2008-11-22 02:48:58