默认样式在运行时不从外部程序集解析

时间:2012-02-23 11:13:49

标签: wpf xaml styles

我在解析外部程序集中的资源方面遇到了一些麻烦。

我在一个名为Theme的项目中有一个Styles.xaml文件,我有一个默认按钮样式,声明如下:

    <Style TargetType="{x:Type Button}" x:Key="{x:Type Button}">
    <!--Setters here-->
    </Style>

然后在一个单独的WPF项目中(但在同一个解决方案中)我在app.xaml文件中有以下内容:

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
        Source="/Theme;component/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

然后在主窗口中,我声明一个没有附加样式的默认Button,如下所示:

    <Button Width="100" Height="100" />

在设计视图中,按钮似乎从Styles.xaml文件中获取样式,但是当我构建并运行项目时,Button只是默认为标准按钮样式。

我已经检查过是否已将Theme.dll文件复制到WPF构建目录(并且已经存在),所以我不知道为什么会这样。

有趣的是,如果我像这样定义按钮样式

    <Style TargetType="{x:Type Button}" x:Key="MyStyle">

然后直接在其他项目中的Button上引用它,就像这样

    <Button Style={StaticResource MyStyle} Width="100" Height="100" />

它在设计视图中选择样式,并在构建和执行项目时正常工作。

有什么想法吗?任何帮助都会很棒!

克里斯

1 个答案:

答案 0 :(得分:1)

如果您没有引用嵌入资源,则可能需要使用完整的pack URI来引用XAML文件,即使用siteoforigin