WPF Prism简单应用程序有两个视图

时间:2014-06-02 17:27:57

标签: wpf mvvm prism

我是初学者,我有一个非常简单的WPF应用程序,有两个视图......(我现在使用代码...)

我需要和this tutorial做同样的事情,但是使用Prism而不是mvvm light ...我需要改变什么?

我设法使用命令,但我不知道如何切换视图...(Prism中不存在ViewModelBase)我需要从我第一个视图的ViewModel中的命令更改视图。 / p>

我只找到难以理解的Prism“入门”教程......我正在寻找一个非常简单的例子......

1 个答案:

答案 0 :(得分:1)

简单的例子;)你看看了吗? http://msdn.microsoft.com/en-us/library/gg406140.aspx这是一个很长的阅读,但充满了信息。 Prism的最新版本引入了BindableBase,它使用SetProperty(ref _propName,value)类型语法,使INotifyProperty Change ordeal更加清晰。

清单16:代码示例使用PRISM库进行WPF,应该为您提供所需的简单示例。他们在5.0中添加了几个例子,而不是之前的股票交易者应用程序。

您可以查看第一个区域导航,然后就像这样。

     <Button Content="Steady State Projects"  
        Style="{StaticResource NavButton}"
        Command="{x:Static infCommands:ApplicationCommands.NavigateCommand}" 
        CommandParameter="{x:Type views:Projects }" MaxHeight="75"/>

  public class ApplicationCommands
  {
    public static CompositeCommand NavigateCommand = new CompositeCommand();
  }

  public class ShellViewModel
  {
    private readonly IRegionManager _regionManager;

    public DelegateCommand<object> NavigateCommand { get; private set; }

    public ShellViewModel(IRegionManager regionManager)
    {
        _regionManager = regionManager;
        NavigateCommand = new DelegateCommand<object>(Navigate);
        ApplicationCommands.NavigateCommand.RegisterCommand(NavigateCommand);
    }

    /// <summary>Navigates using the view path, with the regions</summary>
    /// <param name="navigatePath"></param>
    private void Navigate(object navigatePath)
    {
        if (navigatePath != null)
        {
            _regionManager.RequestNavigate(RegionNames.ContentRegion, navigatePath.ToString(), NavigationComplete);
        }
    }

    /// <summary>Callback activates on navigation completed.</summary>
    /// <param name="result"></param>
    private void NavigationComplete(NavigationResult result)
    {
        // MessageBox.Show(result.Context.Uri.ToString());
    }
 }