MVVM アプローチ (Silverlight) を使用しているとします。
すべてのボタンをコマンドで処理しています。
特定のページに移動するためのボタンがあるとします。たとえば、グリッドで顧客を選択し、顧客の詳細ビューに移動したいとします。
このボタンを DelegateCommand で処理できますか? どのように?ViewModel からのナビゲーションを処理できますか? コード ビハインドからナビゲーションを処理する必要がありますか。
MVVM アプローチ (Silverlight) を使用しているとします。
すべてのボタンをコマンドで処理しています。
特定のページに移動するためのボタンがあるとします。たとえば、グリッドで顧客を選択し、顧客の詳細ビューに移動したいとします。
このボタンを DelegateCommand で処理できますか? どのように?ViewModel からのナビゲーションを処理できますか? コード ビハインドからナビゲーションを処理する必要がありますか。
ここでは、INavigationServiceは使用できません。名前空間System.Windows.Navigation。を追加すると、エラーが発生します。
どうぞ:
Xaml:
<Button Command="{Binding GoToCustomerDetailsPage}" Content="Customer Details"/>
ビューモデル:
private INavigationService _navigationService;
public ViewModel(INavigationService navigationService)
{
_navigationService=navigationService;
}
public ICommand GoToCustomerDetailsPage
{
get{
return new DelegateCommand(GoToCustDetailsPage,CanGoToCustDetailsPage);
}
}
private void GoToCustDetailsPage()
{
_navigationService.Navigate(new Uri("/CustomerDetails", UriKind.Relative));
}
private bool CanGoToCustDetailspage()
{
return true;//Or some sensible code that determines if this is sensible.
}
基本的に、コマンドは通常どおりボタンにバインドされます。コマンドはビューモデルのプロパティです。コマンドが実行されると、ビューモデルのプライベート メソッドが呼び出されるだけです。