将数据绑定到静态加载程序集内的视图模型
本文关键字:视图 模型 程序集 加载 数据绑定 静态 | 更新日期: 2023-09-27 18:36:18
我正在编写一个库,我们的主 WPF GUI 项目在运行时使用反射静态加载。我的类库尝试加载视图模型,目的是在 WPF GUI 中显示其关联的视图。这似乎行不通。这是因为 WPF 无法访问我在库中声明的绑定吗?我在库中有一个名为CommonResources.resx的文件,如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:Plugin.ViewModel"
xmlns:v="clr-namespace:Plugin.View"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<v:MyView/>
</DataTemplate>
</ResourceDictionary>
当主 GUI 尝试显示 MyViewModel 时,如何实现 WPF 魔术?
抱歉,不要那么精确,因为您显示的代码并不反映您为加载插件所做的提升。它并不真正代表您的问题,但总的来说......
您是否考虑过查看 MEF - 托管扩展性框架?有很多文章如何构建 MVVM 应用程序以在运行时使用 viewmodel 加载视图。这也非常适合视图模型定位器模式。
有一个不错的(但很老的)视频系列,来自Mike Taulty,关于如何将mef与Silverlight一起使用。由于 Silverlight 是 WPF/XAML 的一个子集,因此即使技术略有不同,这些概念仍然适用,因此您可能需要进行调整。
但肯定值得一看,因为它可以让您了解如何构建插件架构以及 mef 的工作原理。
https://channel9.msdn.com/Blogs/mtaulty/MEF--Silverlight-4-Beta-Part-1-Introduction(每个视频都有一个指向该系列下一个视频的链接)
呵呵