我尝试使用MVVM轻量级在我们的 Windows 10 通用应用程序中,但它似乎完全无法工作。我见过这个blog http://blog.galasoft.ch/posts/2015/03/using-mvvmlight-with-windows-10-universal-applications/
Nuget 下载并添加了对 MVVM Light 程序集的引用
Nuget还在Application.Resources中添加了ViewModelLocator。
看不到定位器Application.Resources
您需要手动创建ViewModelLocator,请按照以下步骤操作:
- 创建一个新的 Windows 10 通用应用程序,例如:MVVMLightUWPApp1
- 添加参考MVVM轻量级 using NuGet 包管理器
- 为您的 UWP 应用添加一个文件夹,例如:视图模型
- Under the ViewModel folder, add two classes: MainViewModel and ViewModelLocator
在 MainViewModel.cs 中:
namespace MVVMLightUWPApp1.ViewModel
{
public class MainViewModel
{
public string MSG { get; set; }
public MainViewModel()
{
MSG = "Test Message";
}
}
}
在 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
}
}
}
-
在 App.xaml 中:
<Application.Resources>
<vm:ViewModelLocator xmlns:vm="using:MVVMLightUWPApp1.ViewModel"
x:Key="Locator" />
</Application.Resources>
-
在View中,设置DataContext如下:
DataContext="{Binding Main, Source={StaticResource Locator}}"
-
现在,您可以设置与VM的绑定,例如:
<TextBlock Text="{Binding MSG}" FontSize="50" />
好好享受:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)