C#-Wpf-Prism.DryIoc-【2】區域


我的環境:VS2022、.Net6.0

【1】先完成基本的環境搭建,可參考 C#-WPF-Prism.DryIoc-【1】環境搭建 - 輕吟淺唱,驀然花開 - 博客園 (cnblogs.com)

【2】在Views文件夾中添加三個UserControl 分別為View1、View2和View3並分別為三個UserControl添加一個文本控件加以區分

 

 【3】編輯MainView 添加三個按鈕用來切換三個View並為這三個按鈕綁定命令和參數,添加一個ContentControl承載這三個用戶控件

<Window x:Class="Wpf_Prism.DryIoc_Region.Views.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Wpf_Prism.DryIoc_Region.Views"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        mc:Ignorable="d"
        Title="MainView" Height="450" Width="800">
    <DockPanel>
        <UniformGrid Columns="3" DockPanel.Dock="Top">
            <Button Content="打開View1" Command="{Binding OpenViewCommand}" CommandParameter="View1"/>
            <Button Content="打開View2" Command="{Binding OpenViewCommand}" CommandParameter="View2"/>
            <Button Content="打開View3" Command="{Binding OpenViewCommand}" CommandParameter="View3"/>
        </UniformGrid>
        <!--#region 用來承載 View1 View2 View3 這三個不同的頁面-->
        <ContentControl prism:RegionManager.RegionName="MainContentRegion"/>
    </DockPanel>
</Window>

【4】在App.xaml.cs中添加代碼,把View1、View2和View3 分別注冊為導航

using Prism.Ioc;
using System.Windows;
using Wpf_Prism.DryIoc_Region.Views;

namespace Wpf_Prism.DryIoc_Region
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App
    {
        protected override Window CreateShell()
        {
           return Container.Resolve<MainView>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation<View1>();
            containerRegistry.RegisterForNavigation<View2>();
            containerRegistry.RegisterForNavigation<View3>();
        }
    }
}

【5】編輯MainViewModel.cs 代碼如下

using Prism.Commands;
using Prism.Regions;

namespace Wpf_Prism.DryIoc_Region.ViewModels
{
    public class MainViewModel
    {
        private readonly IRegionManager regionManager;

        public DelegateCommand<string> OpenViewCommand { get; private set; }
        public MainViewModel(IRegionManager regionManager)
        {
            this.regionManager = regionManager;
            OpenViewCommand = new DelegateCommand<string>(OpenView);
        }
        private void OpenView(string obj)
        {
            regionManager.Regions["MainContentRegion"].RequestNavigate(obj);
        }
    }
}

【6】啟動項目,運行效果如下

完成,謝謝!


免責聲明!

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



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