在WPF中,如何引用在不同XAML文件中定义的静态资源?

时间:2010-09-02 21:14:10

标签: c# wpf xaml staticresource

在WPF中,如何引用在不同XAML文件中定义的静态资源?它在同一个项目中。

2 个答案:

答案 0 :(得分:8)

另一个XAML文件需要是资源字典。您可以使用当前ResourceDictionary的MergedDictionaries属性将其合并到当前文件中。请参阅MSDN上的Merged Resource Dictionaries。他们的例子:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

然后在该Page对象中,您可以引用myresourcedictionary.xamlmyresourcedictionary2.xaml中定义的静态资源。

答案 1 :(得分:3)

“不同的XAML文件”可能意味着一些不同的东西:

  • App.xaml:资源自动包含在已打开的任何资源树中,因此您无需再做任何其他事情。
  • Window或Page .xaml:对象实例的任何子对象都可以访问资源,例如Window中使用的UserControl。
  • ResourceDictionary:需要显式合并到资源树上面的某个地方。这可以是App.xaml,Windowxx.xaml或一些较低级别的元素。使用ResourceDictionary.MergedDictionaries来执行此操作。

还有许多其他方法可以指定路径,但这是最简单的方法:

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