假设我正在使用MVVM方法(Silverlight)
我正在用命令处理我所有的按钮。
假设我有一个用于导航到某个页面的按钮,假设我们在网格中选择了客户,并希望导航到客户的详细信息视图。
我可以使用委托命令处理此按钮吗?如何?我可以处理视图模型的导航吗?我是否被迫从代码隐藏处理导航。
我们来了:
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.
}
基本上,命令正常绑定到按钮。 该命令是视图模型上的属性。 当命令被执行时,它只是在视图模型中调用一个私有方法。
这里 inavigationService 不可用..如果我们添加命名空间System.Windows.Navigation.,它会给出错误。