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が既に登録されているという例外を送出しました。だから私はデザインモードのチェックでそれを投げて、すべて今働いて –
OK。自分のコードでMVVMLightを使用している間、同じものを再現することができます。このような音はMVVMLightの問題です –