MVVM 灯无法在 Windows 10 通用应用程序中工作 [英] MVVM light can't work in Windows 10 Universal app

查看:49
本文介绍了MVVM 灯无法在 Windows 10 通用应用程序中工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在我们的 Windows 10 通用应用程序中使用 MVVMLight,但它似乎完全无法工作.我看过这个

在 MainViewModel.cs 中:

命名空间 MVVMLightUWPApp1.ViewModel{公共类 MainViewModel{公共字符串味精{得到;放;}公共主视图模型(){MSG = "测试消息";}}}

在 ViewModelLocator.cs 中:

命名空间 MVVMLightUWPApp1.ViewModel{公共类 ViewModelLocator{//<总结>///初始化 ViewModelLocator 类的新实例.///</总结>公共 ViewModelLocator(){ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);////if (ViewModelBase.IsInDesignModeStatic)////{//////创建设计时视图服务和模型////SimpleIoc.Default.Register();///}////别的////{//////创建运行时视图服务和模型////SimpleIoc.Default.Register();///}SimpleIoc.Default.Register();}公共主视图模型主{得到{返回 ServiceLocator.Current.GetInstance();}}公共静态无效清理(){//TODO 清除视图模型}}}

  1. 在 App.xaml 中:

    <vm:ViewModelLocator xmlns:vm="using:MVVMLightUWPApp1.ViewModel"x:Key="定位器"/></Application.Resources>

  2. 在View中,设置DataContext如下:

    DataContext="{Binding Main, Source={StaticResource Locator}}"

  3. 现在,您可以设置绑定到 VM,例如:

享受吧:)

I tried to use MVVMLight in our Windows 10 Universal app, but it seems like that it totally can't work. I've seen this blog

Nuget downloaded and added a reference to the MVVM Light assemblies

Nuget also added the ViewModelLocator in the Application.Resources.

Can't see the Locator in Application.Resources

解决方案

You need to create the ViewModelLocator manually, please follow these steps:

  1. Create a new Windows 10 Universal app, for example: MVVMLightUWPApp1
  2. Add reference to MVVMLight using NuGet Package Manager
  3. Add a folder for your UWP app, for example: ViewModel
  4. Under the ViewModel folder, add two classes: MainViewModel and ViewModelLocator

In MainViewModel.cs:

namespace MVVMLightUWPApp1.ViewModel
{
    public class MainViewModel
    {
        public string MSG { get; set; }
        public MainViewModel()
        {
            MSG = "Test Message";
        }
    }
}

In ViewModelLocator.cs:

namespace MVVMLightUWPApp1.ViewModel
{
    public class ViewModelLocator
    {/// <summary>
     /// Initializes a new instance of the ViewModelLocator class.
     /// </summary>
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            ////if (ViewModelBase.IsInDesignModeStatic)
            ////{
            ////    // Create design time view services and models
            ////    SimpleIoc.Default.Register<IDataService, DesignDataService>();
            ////}
            ////else
            ////{
            ////    // Create run time view services and models
            ////    SimpleIoc.Default.Register<IDataService, DataService>();
            ////}

            SimpleIoc.Default.Register<MainViewModel>();
        }

        public MainViewModel Main
        {
            get
            {
                return ServiceLocator.Current.GetInstance<MainViewModel>();
            }
        }

        public static void Cleanup()
        {
            // TODO Clear the ViewModels
        }
    }
}

  1. In App.xaml:

    <Application.Resources>
       <vm:ViewModelLocator xmlns:vm="using:MVVMLightUWPApp1.ViewModel"
                                   x:Key="Locator" />
    </Application.Resources>
    

  2. In the View, set DataContext as below:

    DataContext="{Binding Main, Source={StaticResource Locator}}"
    

  3. Now, you can set binding to VM, for example:

    <TextBlock Text="{Binding MSG}" FontSize="50" />
    

Enjoy it:)

这篇关于MVVM 灯无法在 Windows 10 通用应用程序中工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆