【问题标题】:Load WPF styles or other Static Resources from an external file or assembly从外部文件或程序集加载 WPF 样式或其他静态资源
【发布时间】:2010-10-16 22:36:18
【问题描述】:

我有几个 WPF 应用程序,我希望我的所有样式都在一个共享程序集中,而不是在每个应用程序中单独声明它们。

我正在寻找一种方法,这样我就不必更改现有应用程序中的所有Style="{StaticResource BlahBlah}";我只是想添加对这个样式程序集的引用,并从当前应用程序中删除它,所以它是从程序集中获取的。

有什么办法吗?

【问题讨论】:

    标签: wpf xaml assemblies styles resourcedictionary


    【解决方案1】:

    引用外部 ResourceDictionary(XAML 文件):

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

    引用外部资源字典 (DLL):

    <Application.Resources>
        <ResourceDictionary Source="/MyExternalAssembly;component/MyResources.xaml" />
    </Application.Resources>
    

    【讨论】:

    • 但是您能说一下我们如何覆盖其他程序集中的资源 xaml 文件中存在的样式吗?例如:设置了 Foreground 属性的样式是默认样式(没有任何 x:Key)。然后我只想更改背景属性。所以我使用了BaseOn,但它不起作用。 :(
    • @amkh,一旦将该样式导入范围,您就可以重新声明并覆盖它,在高范围级别创建一个新样式,设置为 BasedOn{StaticResource {x:Type TextBox}}(用适当的替换 TextBox类型。
    • 非常感谢。我的错误是我在使用 BasedOn 时在错误的位置创建了样式。
    • 如果将使用该资源的 UserControl 位于类库项目中并且没有 App.xaml 怎么办?
    • @JoanComasFdz 您可以在任何地方引用该资源字典。您甚至可以将其添加到用户控制资源中。但我想也许你可以在Themes\Generic.xaml 中引用它,我没有尝试过,但它可能会起作用。
    猜你喜欢
    • 2011-12-07
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多