2013-04-12 36 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

感谢丰富,良好的通话。 (我想要一种全局应用风格的方式,比如母版页,但这是另一个话题!) –