让我们从开始吧。我在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
代码没有被触发,因为这不再是启动应用程序。有没有办法加载它?
我尝试在代码中手动注册此词典,但没有成功。我还尝试将Build Action从“Page”更改为“Content”,将“Do not copy”更改为“Copy if newer”,但它给了我不同的例外:
'无法从文本'local:ThemedWindow“创建'Type',内部异常”{“类型引用找不到名为'{clr-namespace:GeoLocations.Test的类型} ThemedWindow”。“} 的
(这个异常在ResourceDictionary
内被解雇,所以它被加载但是为什么它找不到类型?)。
ThemedWindow是一个继承自Window的类型,后来我的所有窗口继承自ThemedWindow而不是Window
我不知道如何解决这个问题。有人知道要帮忙吗?
答案 0 :(得分:0)
好的,所以我决定在我的ThemedWindow构造函数中添加我的ResourceDictionary代码。如下所示:
var rd = new ResourceDictionary();
rd.Source = new Uri("pack://application:,,,/GeoLocations Screens;component/ThemedWindowStyle.xaml");
Resources.MergedDictionaries.Add(rd);