Silverlight中的MVVM和导航

时间:2012-10-16 04:05:59

标签: mvvm navigation silverlight-5.0

假设我正在使用MVVM方法(Silverlight)

我正在使用命令处理所有按钮。

假设我有一个用于导航到某个页面的按钮,比如说我们在网格中选择了一个客户,并希望导航到客户的详细信息视图。

我可以使用DelegateCommand处理此按钮吗?怎么样?我可以从ViewModel处理导航吗?我是否被迫从代码隐藏处理导航。

2 个答案:

答案 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,它会出错。