Prism Sample 6 Activation Deactivation
例5中刚说到视图精确控制,这次说明这样的灵活控制是怎样做的,显示或不显示,或切换视图。
主页上显示了主按钮和一个ContentControl
<DockPanel LastChildFill="True"> <StackPanel> <Button Content="Activate ViewA" Click="Button_Click"/> <Button Content="Deactivate ViewA" Click="Button_Click_1"/> <Button Content="Activate ViewB" Click="Button_Click_2"/> <Button Content="Deactivate ViewB" Click="Button_Click_3"/> </StackPanel> <ContentControl prism:RegionManager.RegionName="ContentRegion" HorizontalAlignment="Center" VerticalAlignment="Center" /> </DockPanel>
然后在后台代码中,对显示内容进行了精确控制
public partial class MainWindow : Window { IContainerExtension _container; IRegionManager _regionManager; IRegion _region; ViewA _viewA; ViewB _viewB; public MainWindow(IContainerExtension container, IRegionManager regionManager) { InitializeComponent(); _container = container; _regionManager = regionManager; this.Loaded += MainWindow_Loaded; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { _viewA = _container.Resolve<ViewA>(); _viewB = _container.Resolve<ViewB>(); _region = _regionManager.Regions["ContentRegion"]; _region.Add(_viewA); _region.Add(_viewB); } private void Button_Click(object sender, RoutedEventArgs e) { //activate view a _region.Activate(_viewA); } private void Button_Click_1(object sender, RoutedEventArgs e) { //deactivate view a _region.Deactivate(_viewA); } private void Button_Click_2(object sender, RoutedEventArgs e) { //activate view b _region.Activate(_viewB); } private void Button_Click_3(object sender, RoutedEventArgs e) { //deactivate view b _region.Deactivate(_viewB); } }
这里出现的新概念就是Activate 和DeActivate。控制显示和不显示。