2010-05-11 53 views
0

我必須說我在WPF很新。我正在構建我的第一個真正的應用程序,並且目前正面臨着一些與主題相關的問題。這是我發佈的原因。WPF主題:不適用於TextBox,爲什麼?

爲了使用一個主題,比如ExpressionDark.xaml,我認爲將它包含在應用程序級別就足夠了。因此,在我的App.xaml中我加入了:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Skins/ExpressionDark.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
     <myLib:Locator x:Key="Locator" /> 
    </ResourceDictionary> 
</Application.Resources> 

這是第一個問題:我不確定我做的是對的。將ExpressionDark.xaml包含到我的應用程序中的「皮膚」文件夾中並以這種方式引用它是正確的嗎?在其他地方,我發現像「System.Windows.Theming.ExpressionDark」等東西是否會是正確的方法?

無論如何,通過應用上述方法的主題,我可以看到幾乎所有的控件都以適當的方式被設計;我說「幾乎所有」,因爲其中的一些,如DataGrids或TextBoxes,不是。我檢查了ExpressionDark.xaml的內部,並且看到爲這些組件定義了樣式。那麼,爲什麼我會得到這種奇怪的行爲?

我希望我能夠清楚地解釋一切。讓我知道如果它不是。

在此先感謝您提供的任何幫助。

乾杯,

G.

+0

你可以發佈一些代碼,你正在定義一個DataGrid或TextBox。 – ChrisF 2010-05-11 11:58:33

回答

0

好吧,我想我已經找到了這是怎麼回事。

在App.xaml中,我設置了希望我的應用程序使用的樣式字典。在我的MainWindow.xaml中,在「本地」資源中,有另一個字典顯然覆蓋了App.xaml繼承的字典。

我將本地字典(窗口中的字典)與App的MergedDictionaries一起移動,並且所有控件的樣式都正確。

我不明白,雖然這種行爲的原因。這兩本字典並不意味着衝突,我認爲可以在應用程序中使用通用字典,在Window中使用更專用的字典。

那麼,你們有什麼想法,我實際上做錯了什麼?

再次感謝您的幫助, 乾杯, Gianluca。

+1

由於您有多種樣式,控件在查看可視化樹時使用了第一個樣式。由於TextBox的Mainwindow.xaml中有一個定義在那裏停止,而其他控件必須更遠離App.xaml文件。那些找不到樣式的控件將使用默認的鑲邊。 – 2010-05-11 14:43:22

+0

謝謝Mike B指出。 – 2010-05-12 08:07:40

相關問題