繁体   English   中英

WPF中的ResourceDictionary作为DLL应用程序

[英]ResourceDictionary in wpf as dll application

让我们从开始开始。 我在wpf中有一个使用自定义窗口样式的应用程序。 我在app.xaml中定义此自定义样式,如下所示:

<Application x:Class="GeoLocations.Test.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ThemedWindowStyle.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

如今,有一种要求,我需要将该应用程序构建为dll然后再从Windows.Forms应用程序调用它。 显然,不会触发app.xaml代码,因为它不再启动应用程序。 有什么办法加载吗?

我试图在后面的代码中手动注册此Dictionary,但没有成功。 我还尝试将“生成操作”从“页面”更改为“内容”,将“请勿复制”更改为“如果更新则复制”,但这给了我不同的例外:

'无法从文本'local:ThemedWindow'创建'Type' ,内部异常为“ {”类型引用找不到名为'{clr-namespace:GeoLocations.Test} ThemedWindow'的类型。“} (此异常在内部触发ResourceDictionary因此已加载,但为什么找不到类型?)。

ThemedWindow是一种继承自Window的类型,后来我所有的Windows均继承自ThemedWindow而不是Window

我不知道如何解决这个问题。 任何人都有知识可以帮助吗?

好的,所以我解决了此问题,在ThemedWindow构造函数中的代码后面添加了ResourceDictionary。 如下所示:

   var rd = new ResourceDictionary();
   rd.Source = new Uri("pack://application:,,,/GeoLocations Screens;component/ThemedWindowStyle.xaml");
   Resources.MergedDictionaries.Add(rd);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM