0

我是 WPF 项目的新手,我对组件 MahApps.Metro 有疑问。我在项目中创建了 MainWindow 和其他窗口,我的问题是:如何将 MainWindow 中的相同主题应用于项目的其他窗口?而且,我必须为所有窗口应用 ResourceDictionary 还是只存在一次这样做的任何方式?

感谢你们!

4

2 回答 2

1

WPF 中的资源基于其可用的“范围”工作。查看这篇文章以获得详细的解释

现在Application(App.xaml) 的范围比Window. 因此,要在您的 ' 中共享这些 MahApp 控制资源,Window只需将ResourceDictionary' 移动到Application.Resources范围

就像是:

<Application.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/Blue.xaml" />
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

现在您不再需要在每个窗口中添加这些字典,因为它们是隐式可用的

于 2013-07-25T22:22:35.627 回答
1

在您的App.xaml中,像这样设置ResourceDictionary属性:

<Application.Resources>
    <ResourceDictionary Source="MyResourceDictionary.xaml"/>
</Application.Resources>

请注意,为了将资源字典中的样式应用于该类型的所有控件,样式不应具有 key。例如,这样定义的样式:

<Style TargetType="{x:Type Button}">
    <Setter Property="Content" Value="This is the default button text"/>
</Style>

ResourceDictionary将导致项目中的所有按钮在您创建它们时都具有默认值。

于 2013-07-25T16:07:54.567 回答