我正在用 c# 开发一个 winforms 项目。该项目是一个 Outlook 插件,因此没有希望完全转换为 mvvmlight/wpf,因为它是一个 winforms dll 项目。
然而,我试图想出一种将 MvvM Light 和 WPF 与 ElementHost 一起使用的方法。我遇到的问题是访问 ViewModelLocator。通常,这会像这样添加到 App.xaml 中:
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
并可通过以下方式查看:
DataContext="{Binding MyViewModel, Source={StaticResource Locator}}"
就我而言,我没有 App.xaml,也没有可以引导框架的程序 main() 方法(因为这是一个 dll 项目,而不是应用程序)。我在我的 WPF 用户控件(托管在 elementhost 中)中尝试了以下操作,但它不起作用:
DataContext="{Binding MyViewModel, Source={StaticResource Locator}}"
...
<UserControl.Resources>
<ResourceDictionary>
<wpf:ViewModelLocator x:Key="Locator"
d:IsDataSource="True" />
我认为它不起作用,因为它在被调用后被声明。无论如何,这将是一种妥协,因为我在每个视图中都需要该代码,所以我很高兴它没有工作。
有什么建议可以让我到达 ViewModelLocator 吗?
谢谢,杰夫