wpf中的资源字典作为dll应用程序
本文关键字:dll 应用程序 字典 资源 wpf | 更新日期: 2023-09-27 17:50:27
让我们从头开始。我有一个应用程序在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
代码没有被触发,因为这不再是启动应用程序了。有办法装吗?
我试图在代码中手动注册此字典,但没有成功。我还试图将构建操作从"页面"更改为"内容"answers"不复制"更改为"复制如果更新",但它给了我不同的例外:
'从文本'local:ThemedWindow '创建'Type'失败,内部异常"{"类型引用无法找到名为'{clr-namespace: geollocations . 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);