wpf 中的 ResourceDictionary 作为 dll 应用程序
ResourceDictionary in wpf as dll application
让我们从头开始。我在 wpf 中有一个应用程序,它使用我的自定义 window 样式。我在 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
代码没有被触发,因为这不再是启动应用程序。有没有办法加载它?
我尝试在后台代码中手动注册此词典,但没有成功。我还尝试将构建操作从 "Page" 更改为 "Content" 并将 "Do not copy" 更改为 "Copy if newer" 但它给了我不同的异常:
'无法从文本 'local:ThemedWindow" 创建 'Type',内部异常 "{"Type reference cannot find type named '{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);
让我们从头开始。我在 wpf 中有一个应用程序,它使用我的自定义 window 样式。我在 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
代码没有被触发,因为这不再是启动应用程序。有没有办法加载它?
我尝试在后台代码中手动注册此词典,但没有成功。我还尝试将构建操作从 "Page" 更改为 "Content" 并将 "Do not copy" 更改为 "Copy if newer" 但它给了我不同的异常:
'无法从文本 'local:ThemedWindow" 创建 'Type',内部异常 "{"Type reference cannot find type named '{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);