我使用带有MVVM-Light的TemplateStudio创建了一个UWP应用程序,无法将设计数据显示在Visual Studio(或Blend)中。MVVM-Light没有显示设计模式的数据
视图模型定位:
public class ViewModelLocator
{
NavigationServiceEx _navigationService = new NavigationServiceEx();
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if(ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IFooProvider, DesignFooProvider>();
}
else
{
SimpleIoc.Default.Register<IFooProvider, FooProvider>();
}
SimpleIoc.Default.Register(() => _navigationService);
SimpleIoc.Default.Register<ShellViewModel>();
Register<MainViewModel, MainPage>();
Register<FooViewModel, FooView>();
_navigationService.SetMainViewModel(MainViewModel);
}
public MainViewModel MainViewModel => ServiceLocator.Current.GetInstance<MainViewModel>();
public ShellViewModel ShellViewModel => ServiceLocator.Current.GetInstance<ShellViewModel>();
public FooViewModel FooViewModel => ServiceLocator.Current.GetInstance<FooViewModel>();
public void Register<VM, V>() where VM : class
{
SimpleIoc.Default.Register<VM>();
_navigationService.Configure(typeof(VM).FullName, typeof(V));
}
}
FooViewModel具有绑定到FooView.xaml一个ObservableCollection
现在,当我运行的实际代码一切都正常运行,我的FooViewModel正确地获取与从数据填充FooProvider。
虽然在Visual Studio或Blend中查看FooView,但没有数据显示在FooView.xaml的ListBox中。
有没有办法在设计时调试出了什么问题?如何修复我的定位器,以便在设计期间在FooView中正确显示数据?
(注意:我添加到上面的类的唯一代码与FooView相关的项目有关,其他人被预填充)。
调试工作完美。问题是这一行: 'SimpleIoc.Default.Register((=> _navigationService);' ,它引发了一个异常,说NavigationService已经注册。所以我把它扔进设计模式检查,现在一切正常 –
好的。我可以在我的代码中使用MVVMLight重现相同的效果。听起来像这是MVVMLight的问题 –