【问题标题】:mvvm light Winforms dll project, how can I load the ViewModelLocatormvvm light Winforms dll项目,如何加载ViewModelLocator
【发布时间】:2015-08-02 08:37:16
【问题描述】:

我正在用 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 吗?

谢谢, 杰夫

【问题讨论】:

    标签: mvvm-light mvvm-toolkit


    【解决方案1】:

    所以我想出了如何解决这个问题。它并不完美,但它有效。最后,我没有应用程序来加载引导程序,所以我真正需要的是一种让视图访问 ViewModelLocator 的方法,这样我就可以对视图进行数据绑定。为此,我在 ViewModelLocator 类上将 MyViewModel 属性设为静态,然后在 xaml(视图)中更改了 DataContext 行,如下所示:

    DataContext="{x:Static wpf:ViewModelLocator.MyViewModel}"
    

    【讨论】:

    • 嗨。我现在正在努力解决同样的问题。当我使用你上面写的那行时,我得到了错误。您能否发送整个(或尽可能多的)xaml 代码。谢谢!
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多