wpf从另一个文件夹/命名空间加载资源

时间:2016-01-13 16:26:21

标签: wpf xaml namespaces

如何加载资源,例如来自同一项目中另一个文件夹的样式资源?有任何想法吗? 我的directory看起来像这样,我想在ButtonTest.xaml中使用ButtonStyles.xaml。在设计模式下,在启动应用程序之前。使用App.xaml中的资源可以在运行时完美运行。

1 个答案:

答案 0 :(得分:1)

在您想要的文件夹中的ResourceDictionary中添加自定义样式 - 在我的例子中,文件是/Resources/Themes/Button.xaml。给风格一把钥匙:

<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
    // define your style, for example
    <Setter Property="SnapsToDevicePixels" Value="true"/>
<Style>

如果您想添加多个样式文件,最好合并您的ResourceDictionaries,  例如,在一个名为Generic.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:,,,/PROJECT_NAME;component/Resources/Themes/Button.xaml"/>
    <ResourceDictionary Source="pack://application:,,,/PROJECT_NAME;component/[path and file name]"/>
    // add all your resourcedictionaries 
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

如果要使用样式,请将合并的ResourceDictionary添加为资源。例如在UserControl中, 像这样添加:

<UserControl.Resources>
    <inf:DesignTimeResourceDictionary Source="pack://application:,,,/PROJECT_NAME;component/Resources/Themes/Generic.xaml"/>
</UserControl.Resources>

然后,当您添加按钮时,您可以使用您提供的密钥将该样式用作动态资源。

<Button Style="{DynamicResource MyButtonStyle}"/>

确保更改所有名称以匹配您的项目和文件名。