![](/img/trans.png)
[英]ResourceDictionary dynamic updating not updating UI in Hybrid Winforms/WPF application
[英]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.