2013-04-12 39 views
5

我正在使用MahApps.Metro,版本0.11.0.9-ALPHA for .NET 4.5。並希望知道引用其資源字典的最佳方式。WPF MahApps.Metro - ResourceDictionaries的放置位置?

有人告訴我,我不應該將它們作爲App.xaml中的合併字典引用。如果情況並非如此,是否需要將它們添加爲每個窗口的Window.Resources?

我這樣做:

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Red.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

</Application.Resources> 

這樣做的問題是,一些控件行爲古怪,例如最小化,最大化和窗口關閉按鈕顯示爲無文本黑塊。當我將這些資源字典稱爲Window.Resources時,它一切正常......

回答

7

我簡單地使用每個窗口引用的共享資源字典。

GeneralResources.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 

    <other shared resources... /> 
</ResourceDictionary> 

每個窗口:

<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="GeneralResources.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 

     <other window resources... /> 
    </ResourceDictionary> 
</Window.Resources> 
+0

感謝豐富,良好的通話。 (我想要一種全局應用風格的方式,比如母版頁,但這是另一個話題!) –