【问题标题】:In WPF how do I reference a static resource that is defined in a different XAML file?在 WPF 中,如何引用在不同 XAML 文件中定义的静态资源?
【发布时间】:2010-09-02 21:14:09
【问题描述】:

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

【问题讨论】:

    标签: c# wpf xaml staticresource


    【解决方案1】:

    另一个 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>
    

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

    【讨论】:

      【解决方案2】:

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

      • App.xaml:资源会自动包含在任何打开的资源树中,因此您无需执行任何额外操作。
      • 窗口或页面 .xaml:资源可由对象实例的任何子级访问,例如在窗口中使用的 UserControl。
      • ResourceDictionary:需要显式合并到资源树中使用它的上方某处。这可以是 App.xaml、Windowxx.xaml 或一些较低级别的元素。使用 ResourceDictionary.MergedDictionaries 来执行此操作。

      还有很多替代方法来指定路径,但这是最简单的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-23
        相关资源
        最近更新 更多