狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

.NET 6.0 + WPF 使用 Prism 框架實現導航

freeflydom
2024年9月12日 8:55 本文熱度 826

前言

Prism 一個開源的框架,專門用于開發可擴展、模塊化和可測試的企業級 XAML 應用程序,適用于 WPF(Windows Presentation Foundation)和 Xamarin Forms 等平臺。

Prism 基于 MVVM(Model-View-ViewModel)設計模式,提供一套豐富的工具和庫,能夠實現模塊化、依賴注入、導航和事件聚合等功能。

本文將介紹 Prism 框架的基本概念、安裝步驟以及使用。

什么是Prism?

Prism 是一個用于開發靈活、可維護的 WPF、Windows 10 UWP 和 Xamarin.Forms 應用程序的框架。它是由微軟的模式與實踐團隊開發的,,構建模塊化、可測試的應用程序。Prism 包含了幾個核心組件,以支持應用程序的架構和設計模式:

1、依賴注入(Dependency Injection)

Prism 提供了一個依賴注入容器,可以將應用程序的組件和服務進行解耦,從而提高代碼的可測試性和可維護性。

2、模塊化(Modularity)

Prism 支持模塊化設計,將應用程序分解成獨立的模塊,每個模塊負責特定的功能。這樣助于減少應用程序的復雜性,并能夠使開發和維護更加容易。

3、導航(Navigation)

Prism 提供了一個靈活的導航系統,可以定義視圖之間的導航路徑,并管理視圖的生命周期。

4、事件聚合器(Event Aggregator)

這是一個松散耦合的事件發布/訂閱機制,應用程序的不同部分之間進行通信,而不需要直接引用對方。

5、命令(Commands)

Prism 提供了一種簡化的方式來處理用戶界面中的命令,如按鈕點擊事件。

6、數據綁定(Data Binding)

雖然 Prism 本身不提供數據綁定機制,但它與 WPF 和 Xamarin.Forms 的數據綁定框架緊密集成,可以輕松地將視圖模型與視圖進行綁定。

7、視圖模型(ViewModel)

Prism 鼓勵使用視圖模型模式,是一種將業務邏輯與用戶界面分離的設計模式,有助于程序更加清晰和可維護。

安裝 Prism

Prism 可通過NuGet方案包管理器進行安裝,主要安裝三個Prism.Core、Prism.Unity、Prism.Wpf。

首先創建一個新的 WPF、Xamarin Forms、Uno 或 WinUI 項目,然后打開 NuGet 包管理器,右鍵點擊項目 -> 選擇"管理 NuGet 包"。

1、安裝 Prism 核心包

在NuGet包管理器中,搜索并安裝 Prism.Core。

2、安裝容器包

在NuGet包管理器中,搜索Prism.Unity或Prism.DryIoc(根據你的需求選擇),然后點擊安裝。

Unity是Prism官方推薦的容器之一,但DryIoc在某些情況下可能提供更高的性能。

3、安裝平臺包

WPF 安裝 Prism.Wpf

Xamarin Forms 安裝 Prism.Forms

Uno Platform 安裝 Prism.Uno

WinUI 安裝 Prism.WinUI

具體操作步驟,可以參考下圖:

 

使用 Prism

通過一個手動敲代碼示例實現 WPF MVVM框架 Prism 導航,具體可以參考以下代碼。

1、新建WPF項目

首先新建一個WPF項目,根據上面圖示完成Prism的安裝,具體項目結構如下圖所示:

1、框架使用 .NET 6.0、Visual Studio 2022;

2、新建Views與ViewModels文件夾

 

2、重寫 App.xaml

添加命名空間xmlns:prism="http://prismlibrary.com/"

記得刪除StartupUri="MainWindow.xaml

繼承由Application->PrismApplication,代碼如下所示:

<prism:PrismApplication x:Class="ManageCore.WpfApp.App"

         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

         xmlns:local="clr-namespace:ManageCore.WpfApp"

         xmlns:prism="http://prismlibrary.com/">

    <Application.Resources>

    </Application.Resources>

</prism:PrismApplication>

3、修改 App.xaml.cs

繼承由Application->PrismApplication, 代碼如下所示:

public partial class App : PrismApplication

  {

      protected override Window CreateShell()

      {

          return Container.Resolve<MainWindow>();

      }

      protected override void RegisterTypes(IContainerRegistry containerRegistry)

      {

          containerRegistry.RegisterForNavigation<Home, HomeViewModel>();

          containerRegistry.RegisterForNavigation<Edge, EdgeViewModel>();

      }

      protected override void OnStartup(StartupEventArgs e)

      {

          base.OnStartup(e);

      }

  }

在這里實現了兩個抽象方法:

CreateShell

該方法返回了一個Window類型的窗口, 其實就是返回應用程序的主窗口。

RegisterTypes

該方法用于在Prism初始化過程中, 我們定義自身需要的一些注冊類型, 以便于在Prism中可以使用。

注意:

Views文件夾下新建了兩個 UserControlHome、Edge并在RegisterTypes進行注冊。

ViewModels文件夾下新建了兩個VM HomeViewModel、EdgeViewModel進行注冊。

4、修改 MainWindow.xaml

添加命名空間xmlns:prism="http://prismlibrary.com/"

設置prism:ViewModelLocator.AutoWireViewModel="True" Prism框架會根據規則自動查找該視圖相對應ViewModel。

使用了WPFDevelopers中的DrawerMenu進行切換菜單。

<wd:Window x:Class="ManageCore.WpfApp.Views.MainWindow"

        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:wd="https://github.com/WPFDevelopersOrg/WPFDevelopers"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:ManageCore.WpfApp"

        xmlns:vm="clr-namespace:ManageCore.WpfApp.ViewModels"

        xmlns:prism="http://prismlibrary.com/" 

        xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

           Title="Prism - 導航欄" 

        Width="800" 

        Height="450" 

        prism:ViewModelLocator.AutoWireViewModel="True">

    <Grid>

       

    </Grid>

</wd:Window>

5、MainWindowViewModel

選中ViewModels文件右鍵創建MainWindowViewModel繼承BindableBase

使用RegionManager上調用RequestNavigate方法,該方法允許您指定要導航的區域。

使用RegionManager上的RegisterViewWithRegion加載View。

使用RegionManager上的RequestNavigate導航菜單。

MainWindow.xaml通過prism:ViewModelLocator.AutoWireViewModel="True"屬性自動綁定了MainWindowViewModel。

這樣,當MainWindow被加載時,Prism會自動創建并關聯MainWindowViewModel實例。

public class MainWindowViewModel : BindableBase

 {

     private DrawerMenuItem _selectedItem;

     public DrawerMenuItem SelectedItem

     {

         get { return _selectedItem; }

         set { SetProperty(ref _selectedItem, value); }

     }

     public DelegateCommand SelectionChangedCommand { get; }

     

     private readonly IRegionManager _regionManager;


     /// <summary>

     /// 

     /// </summary>

     /// <param name="regionManager"></param>

     public MainWindowViewModel(IRegionManager regionManager)

     {

        

     }

     void UpdateRegionViews()

     {

        

     }

 }

示例中創建了一個簡單的Prism應用程序,其中App.xaml和App.xaml.cs配置了Prism的啟動和依賴注入。

啟動程序

通過上面代碼的編寫,完成WPF框架應用,具體運行效果如下所示:

總結

Prism 是一個專為 WPF 應用程序設計的 MVVM 模式框架,它通過依賴注入和控制反轉容器來促進團隊協作中的松耦合設計。

憑借其強大的功能和靈活性,Prism 成為了開發企業級應用程序的首選框架。不僅簡化了代碼結構,提高了應用程序的可維護性和可擴展性。

希望這篇文章能幫助你了解Prism框架的基本概念、安裝步驟以及如何使用。

轉自https://www.cnblogs.com/1312mn/p/18401144


該文章在 2024/9/12 9:18:24 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved