MVVM灯可以';无法在Windows 10通用应用程序中工作
我试着在我们的Windows10Universal应用程序中使用MVVMLight,但它似乎完全无法工作。我见过这个 Nuget下载并添加了对MVVM灯光组件的引用 Nuget还在Application.Resources中添加了ViewModelLocatorMVVM灯可以';无法在Windows 10通用应用程序中工作,mvvm,windows-10,win-universal-app,uwp,Mvvm,Windows 10,Win Universal App,Uwp,我试着在我们的Windows10Universal应用程序中使用MVVMLight,但它似乎完全无法工作。我见过这个 Nuget下载并添加了对MVVM灯光组件的引用 Nuget还在Application.Resources中添加了ViewModelLocator 在应用程序中看不到定位器。参考资料您需要手动创建ViewModelLocator,请按照以下步骤操作: 创建新的Windows 10通用应用程序,例如:MVVMLightUWP1 使用NuGet Package Manager添加对MV
在
应用程序中看不到定位器。参考资料您需要手动创建ViewModelLocator,请按照以下步骤操作:
创建新的Windows 10通用应用程序,例如:MVVMLightUWP1
使用NuGet Package Manager添加对MVVMLight的引用
为您的UWP应用程序添加文件夹,例如:ViewModel
在ViewModel文件夹下,添加两个类:MainViewModel和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
}
}
}
现在,您可以设置绑定到VM,例如:
<TextBlock Text="{Binding MSG}" FontSize="50" />
享受它:)有一个快速的代码问题。谢谢你的这篇文章,因为它是有效的,但是绑定是如何工作的呢?Main实际上没有指定,我不清楚绑定如何知道Main是在ViewModelLocator下找到的。这仅仅是因为它在MVVMLightUWPApp1.ViewModel下是公共的吗?@Poken1151通过在绑定中设置Source={staticresource Locator},您告诉绑定使用键定位器(我们在App.xaml文件中的Application.Resources中定义)查找资源。从那里,它在定位器中查找属性Main
DataContext="{Binding Main, Source={StaticResource Locator}}"
<TextBlock Text="{Binding MSG}" FontSize="50" />