15 Prism框架--区域
功能
通过点击不同的,实现显示不同的界面
View部分 .xaml
<Windowx:Class="FullApp.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/"Title="{Binding Title}"Width="525"Height="350"prism:ViewModelLocator.AutoWireViewModel="True"><Grid><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition/></Grid.RowDefinitions><StackPanel Orientation="Horizontal"><ButtonMargin="5"Command="{Binding OpenCommand}"CommandParameter="ViewA"Content="打开模块A" /><ButtonMargin="5"Command="{Binding OpenCommand}"CommandParameter="ViewB"Content="打开模块B" /><ButtonMargin="5"Command="{Binding OpenCommand}"CommandParameter="ViewC"Content="打开模块C" /></StackPanel><ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion"/></Grid>
</Window>
创界导航页面
ViewB、ViewC和ViewA类似。
<UserControl x:Class="FullApp.Views.ViewA"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:FullApp.Views"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"><Grid><TextBlock Text="我是模块A"FontSize="80" /></Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace FullApp.Views
{/// /// ViewA.xaml 的交互逻辑/// public partial class ViewA : UserControl{public ViewA(){InitializeComponent();}}
}
创建命令
public DelegateCommand<string> OpenCommand { get; private set; }
的构造函数要用到第一步创建的命令,传进一个函数Open
private readonly IRegionManager regionManager;public MainWindowViewModel(IRegionManager regionManger){OpenCommand = new DelegateCommand<string>(Open);this.regionManager = regionManger;}
这个地方参数为,是View部分xmal prism:.=""末尾部分的区域
private void Open(string obj){//首先通过IregionManager接口获取全局定义的区域//往这个区域动态的去设置内容//设置内容的方式是依赖注入regionManager.Regions["ContentRegion"].RequestNavigate(obj);}
这里用了依赖注入,如果不用依赖注入Open里面将会实例多个导航界面,导航界面和本类形成依赖
依赖注入注册,在APP.xaml里实现
using FullApp.Views;
using Prism.DryIoc;
using Prism.Ioc;
using System.Windows;namespace FullApp
{/// /// Interaction logic for App.xaml/// public partial class App:PrismApplication{protected override Window CreateShell(){return Container.Resolve<MainWindow>();}protected override void RegisterTypes(IContainerRegistry containerRegistry){containerRegistry.RegisterForNavigation<ViewA>("ViewA");containerRegistry.RegisterForNavigation<ViewB>("ViewB");containerRegistry.RegisterForNavigation<ViewC>("ViewB");}}
}
介绍
控件是一种可以添加和自定义的控件,用于在模板、表单和文档中包含特定类型的内容[1]()[2]()。例如,你可以使用控件来创建一个下拉列表,让用户从有限的选项中选择[1]()。
控件可以包含任意类型的内容,如日期、列表或格式化文本[2]()。你可以通过设置控件的属性来控制其外观和行为,如标题、标签、颜色、锁定等[1]()[2]()。
在WPF中,控件是一个基类,有很多派生类,如、Label、等[3]()[4]()。你可以使用XAML或代码来创建和操作控件[3]()[4]()[5]()。
在Word中,对象是一个代表文档中内容控件的对象,你可以使用VBA来插入、删除、修改或查询内容控件的属性和方法[6]()。
↩︎
依赖注入(DI)
定义:
依赖注入(DI)是一种软件设计模式,它可以实现控制反转(IoC),即让类的依赖项由外部提供,而不是在类内部创建[1]()[2]()。这样可以降低类之间的耦合,提高代码的可测试性和可维护性[1]()[2]()。
C#中有很多支持依赖注入的框架,如、、Unity等[3]()。你也可以使用.NET自带的依赖注入机制,通过接口来注册服务,并通过接口来获取服务[2]()[4]()[5]()。
在ASP.NET Core中,依赖注入是一个内置的功能,你可以在类中配置服务,并在控制器、过滤器、视图等地方使用构造函数注入或属性注入的方式来获取服务[6]()[4]()。