2015-10-08 66 views
0

大家好在SO,WPF ResourceDictionary和造型

我在WPF有一個問題。我有2(或更多在不久的將來)ResourceDictionaries,包含所有控制模板和另一個包含圖標和SolidColorBrushes其中之一。由於第一ResourceDictionary中包含2個款式供每個控制,我想使包含顏色和圖標在對話框中使用它們的另一個解釋,從而使去除多餘的樣式。我想總是使用基本字典和所需的顏色字典,但這裏是問題:

模板無法訪問其他字典中的顏色。我曾嘗試以下方法:

方法1:引用窗口顏色字典和建設的參考顏色字典中的模板詞典:在窗口

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="BaseUIStyle.xaml"/> 
      <ResourceDictionary Source="UIStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

方法2引用兩個字典。最初的設置是一樣的,但反過來想(窗口 - >基礎 - >顏色)

//Window XAML  
<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="UIStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

//Color XAML 
<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="BaseUIStyle.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

許多人,而造型窗戶遇到臭名昭著的.NET 4的Bug不在這裏IMO,因爲應用程序將.NET 4.5作爲目標框架,甚至第二種方法也不會太深入(如果我通過3級或更深級的搜索瞭解了這一點,就會發生錯誤)。

感謝所有幫助

回答

0

移動你的資源字典的App.xaml中,在App.xaml中引用的任何將提供給應用程序中的任何文件。

請記住,資源可用於添加到其中的任何內容以及其他任何資源,因此在上面的示例中,添加到窗口的任何內容都將具有可用資源,IDE可能不會自動完成它們,但如果它們處於它會的App.xaml。

我還沒有看到Color.xaml被引用的任何地方。

根據您需要BaseUiStyle.xaml和UIStyles.xaml的最高級別,您可能會在App.xaml中結束此操作。

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Color.xaml"/> 
      <ResourceDictionary Source="BaseUIStyle.xaml"/> 
      <ResourceDictionary Source="UIStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
+0

我找不到App.xaml,可能是因爲項目的構建方式。 UIStyles.xaml包含顏色。 – AlphaNERD

+0

這是一個WPF應用程序? App.xaml是應用程序的默認輸入,通常調用MainWindow。你很少有一個App.xaml;也許該文件被重命名?嘗試搜索「StartupUri」並查看是否可以這樣找到它。 –

+0

實際上沒有結果... – AlphaNERD