【问题标题】:Default Styles not resolving from external assembly at runtime默认样式在运行时无法从外部程序集中解析
【发布时间】:2012-03-13 18:58:54
【问题描述】:

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

我在一个名为 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 Width="100" Height="100" />

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

我检查了 Theme.dll 文件是否已被复制到 WPF 构建目录中(确实如此),所以我不知道为什么会发生这种情况。

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

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

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

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

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

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

克里斯

【问题讨论】:

    标签: wpf xaml styles


    【解决方案1】:

    您可能需要在引用 XAML 文件的地方使用完整的 pack URI,即如果您不引用嵌入式资源,则使用 siteoforigin。

    【讨论】:

    • 这可能是我缺乏理解,但如果我使用这样的 packuri:pack://siteoforigin:,,,/Theme;component/Styles.xaml 我得到异常“检查目录存在于指定位置”。主题程序集位于 WPF 应用程序的根目录中,所以我不确定为什么这不起作用。感谢您的回复!
    猜你喜欢
    • 2021-05-08
    • 2017-09-20
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2018-11-08
    相关资源
    最近更新 更多