假设我正在使用MVVM方法(Silverlight)
我正在使用命令处理所有按钮。
假设我有一个用于导航到某个页面的按钮,比如说我们在网格中选择了一个客户,并希望导航到客户的详细信息视图。
我可以使用DelegateCommand处理此按钮吗?怎么样?我可以从ViewModel处理导航吗?我是否被迫从代码隐藏处理导航。
答案 0 :(得分:0)
我们走了:
的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.
}
基本上,Command按正常方式绑定到按钮。该命令是viewmodel上的属性。执行Command时,它只是在viewmodel中调用私有方法。
答案 1 :(得分:0)
这里INAVigationService不可用..如果我们添加命名空间System.Windows.Navigation,它会出错。