小编Anu*_*nup的帖子

从另一个视图模型调用WPF命令的MVVM方式是什么?

我正在尝试更多地了解WPF中的MVVM实现,目前需要一些使用ViewModels进行导航的指导.我正在关注Rachel博客中的 WPF导航示例,并且需要一种从其他ViewModel调用CommandViewModel命令的方法.

根据博客,从MainWindow切换视图非常清楚,但我想了解更多关于视图间导航的信息,即说我在HomeWindow上的Home,Product和Contact按钮以及View和ViewModel类,现在我想打开Contact主页视图中的某个按钮而不是MainWindow的页面.我已经在Home ViewModel中编写了一些代码来实现相同但我怀疑这是否是MVVM的最佳实践.有没有办法从HomeView.XAML实现相同的目标?

来自博客的代码片段 - ApplicationViewModel.cs

private ICommand _changePageCommand;

private IPageViewModel _currentPageViewModel;
private List<IPageViewModel> _pageViewModels;

public ApplicationViewModel()
{
    // Add available pages in c'tor
    PageViewModels.Add(new HomeViewModel(this));
    PageViewModels.Add(new ProductsViewModel());
    PageViewModels.Add(new ContactViewModel());
}

public ICommand ChangePageCommand
{
    get
    {
        if (_changePageCommand == null)
            _changePageCommand = new RelayCommand(
              p => ChangeViewModel((IPageViewModel)p), p => p is IPageViewModel);

        return _changePageCommand;
    }
}

private void ChangeViewModel(IPageViewModel viewModel)
{
    if (!PageViewModels.Contains(viewModel))
        PageViewModels.Add(viewModel);

    CurrentPageViewModel = PageViewModels.FirstOrDefault(vm => vm == viewModel);
}
Run Code Online (Sandbox Code Playgroud)

来自博客的Code Snippet - ApplicationView.xaml

<Window.Resources> …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

2
推荐指数
1
解决办法
3122
查看次数

标签 统计

c# ×1

mvvm ×1

wpf ×1