Prism框架的Regions使用


Prism框架的Regions,可以把用戶控件、窗體等附加到主窗體指定的控件中。

【實戰1】

1、新建Prism Blank App(WPF) 項目:Demo0810

Views文件夾處,鼠標右鍵——添加——新建項——Prism——Prism UserControl(WPF),名稱默認

MainWindow.xaml.cs代碼:

using System.Windows;
using Prism.Regions; //引入Regions

namespace Demo0810.Views
{
    public partial class MainWindow : Window
    {
        public MainWindow(IRegionManager regionManager) //定義變量
        {
            InitializeComponent();
            //將PrismUserControl1用戶控件加載到主窗體的ContenRegion控件中
            regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1)); 
            ////或者
            //PrismUserControl1 viewA = new PrismUserControl1(); //new出一個類的對象
            //_regionManager.AddToRegion("ContentRegion", viewA);
        }
    }
}

PrismUserControl1.xaml代碼:其他文件原封不動

<UserControl x:Class="Demo0810.PrismUserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:prism="http://prismlibrary.com/"             
             prism:ViewModelLocator.AutoWireViewModel="True">
    <Grid>
        <TextBlock Text="View A" FontSize="38" />
    </Grid>
</UserControl>

 或者MainWindow.xaml.cs不更改(保持極簡純粹),更改MainWindowViewModel.cs的代碼:推薦

using Prism.Mvvm;
using Prism.Regions; //引入Regions

namespace Demo0810.ViewModels
{
    public class MainWindowViewModel : BindableBase
    {
        private string _title = "Prism Application";
        public string Title
        {
            get { return _title; }
            set { SetProperty(ref _title, value); }
        }       
        public MainWindowViewModel(RegionManager regionManager) //定義變量
        {
            //將PrismUserControl1用戶控件加載到主窗體的ContenRegion控件中
            regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1)); ////或者
            //PrismUserControl1 viewA = new PrismUserControl1(); //new出一個類的對象
            //_regionManager.AddToRegion("ContentRegion", viewA);
        }
    }
}

 【實戰2】仿照實戰1新建項目Demo08101、添加用戶控件PrismUserControl1.cs

主窗體界面前端代碼MainWindow.xaml:

<Window x:Class="Demo08101.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        Title="{Binding Title}" Height="350" Width="525">
    <DockPanel LastChildFill="True">
        <Button Command="{Binding ShowCommand}" DockPanel.Dock="Top" >Add View</Button>
        <ContentControl prism:RegionManager.RegionName="ContentRegion" />
    </DockPanel>
</Window>

MainWindowViewModel.cs代碼:其他文件原封不動

using System;
using Prism.Mvvm;
using Prism.Commands;
using Prism.Regions;
using Demo08101.Views;

namespace Demo08101.ViewModels
{
    public class MainWindowViewModel : BindableBase
    {
        private string _title = "Prism Application";
        public string Title //數據屬性
        {
            get { return _title; }
            set { SetProperty(ref _title, value); }
        }
        public DelegateCommand ShowCommand { get; set; } //命令屬性

        IRegionManager _regionManager; //定義變量
        public void Show() //方法,展示用戶控件到指定的主窗體控件中
        {            
            _regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
            ////或者
            //PrismUserControl1 viewA = new PrismUserControl1(); //new出一個類的對象
            //_regionManager.AddToRegion("ContentRegion", viewA);
        }

        public MainWindowViewModel(IRegionManager regionManager)
        {
            _regionManager = regionManager; //賦值
            this.ShowCommand = new DelegateCommand(new Action(Show)); //命令屬性關聯方法
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM