MVVM 灯无法在 Windows 10 通用应用程序中工作 [英] MVVM light can't work in Windows 10 Universal app
问题描述
我尝试在我们的 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 清除视图模型}}}
在 App.xaml 中:
<vm:ViewModelLocator xmlns:vm="using:MVVMLightUWPApp1.ViewModel"x:Key="定位器"/></Application.Resources> 在View中,设置DataContext如下:
DataContext="{Binding Main, Source={StaticResource Locator}}"
现在,您可以设置绑定到 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:
- Create a new Windows 10 Universal app, for example: MVVMLightUWPApp1
- Add reference to MVVMLight using NuGet Package Manager
- Add a folder for your UWP app, for example: ViewModel
- 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
}
}
}
In App.xaml:
<Application.Resources> <vm:ViewModelLocator xmlns:vm="using:MVVMLightUWPApp1.ViewModel" x:Key="Locator" /> </Application.Resources>
In the View, set DataContext as below:
DataContext="{Binding Main, Source={StaticResource Locator}}"
Now, you can set binding to VM, for example:
<TextBlock Text="{Binding MSG}" FontSize="50" />
Enjoy it:)
这篇关于MVVM 灯无法在 Windows 10 通用应用程序中工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!