首先创建一个空的Prism项目
在View文件夹中创建一个UserControl的A界面,再在ViewModel中创建一个AViewModel的类
在主页面中创建Button按钮,使用Command属性,指向导航命令的方法,CommandParameter指向导航的页面
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="A">A</Button>
<Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="B">B</Button>
<Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="C">C</Button>
<Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="D">D</Button>
<Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="E">E</Button>
<Button Height="30" Width="20" Margin="10" Command="{Binding NavigationParaCommand}" CommandParameter="F">F</Button>
</StackPanel>
<ContentControl Grid.Column="1" prism:RegionManager.RegionName="ContentRegion" />
</Grid>
想要使用导航,首先需要在APP.xaml.cs中注册好导航
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<A,AViewModel>();
containerRegistry.RegisterForNavigation<B,BViewModel>();
containerRegistry.RegisterForNavigation<C,CViewModel>();
containerRegistry.RegisterForNavigation<D,DViewModel>();
containerRegistry.RegisterForNavigation<E,EViewModel>();
containerRegistry.RegisterForNavigation<F,FViewModel>();
}
注册视图与视图模型的导航关系,程序可以通过导航框架在不同的视图中进行切换和导航
在MainqWindowViewModel类中创建一个导航命令成员属性,赋予get,set方法
//创建一个导航命令,需要传递一个页面名称
public DelegateCommand<string> NavigationComand { get; set; }
类中创建导航的方法
**导航的方法
* viewName需要导航到那个页面的名称
*/
public void Navigation(string viewName) {
_regionManager.RequestNavigate("ContentRegion", viewName);
}
//私有化IRegionManager对象
private IRegionManager _regionManager;
在主页面有参构造方法中,将导航的方法传递给导航命令
public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
NavigationComand = new(Navigation);
}
运行程序后,在对应的region区域中显示相应页面的内容