【发布时间】:2017-11-17 10:27:06
【问题描述】:
我使用带有 MVVM-Light 的 TemplateStudio 创建了一个 UWP 应用,但无法获取设计数据以显示在 Visual Studio(或 Blend)中。
查看模型定位器:
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 相关的项目有关,其他代码是预先填充的)。
【问题讨论】:
标签: xaml mvvm uwp mvvm-light uwp-xaml