私たちが抱えている問題は、ビューモデルの最初のアプローチを使用すると、プリズムシルバーライトアプリケーションでバインディングを機能させることができないことです。ビューファーストアプローチは正常に機能します。公式ドキュメントとさまざまなWebサイトを確認しましたが、まだ問題は解決していません。以下は、ビューモデルファーストとビューファーストアプローチの両方のコードです。私たちは何かが欠けていますか?私のブログhttp://silvercasts.blogspot.comでそれについて読んでください
ビューモデルの最初のアプローチ:
ブートストラッパー:
internal void RegisterLoginRegionAndView()
{
IRegionManager regionManager = Container.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion(ShellRegionNames.MainRegion,
() => Container.Resolve<IViewModel>().View);
}
ViewModel:
public ViewModel(IView view)
{
View = view;
View.SetModel(this);
User = new User();
User.Username = "TestUser";
}
ViewModelインターフェイス:
public interface IViewModel
{
IView View { get; set; }
}
ビューインターフェイス:
public interface IView
{
void SetModel(IViewModel model);
}
Xamlを表示:
<TextBox x:Name="Username" TextWrapping="Wrap" Text="{Binding User.Username}" />
背後にあるコードを表示:
public void SetModel(IViewModel viewModel)
{
this.DataContext = viewModel;
}
最初のアプローチを見る
ブートストラッパー:
regionManager.RegisterViewWithRegion(ShellRegionNames.MainRegion, typeof(IView));
ViewModel:
public ViewModel()
{
User = new User();
User.Username = "TestUser";
}
背後にあるコードを表示:
public View(IViewModel viewModel)
{
InitializeComponent();
this.DataContext = viewModel;
}