我使用帶有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的問題 –