wpf prism 《1》、区域 、模块化

2024-08-29 12:36
文章标签 区域 模块化 wpf prism

本文主要是介绍wpf prism 《1》、区域 、模块化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装prism.DryIoc

在这里插入图片描述

修改app.xaml

在这里插入图片描述

<prism:PrismApplication x:Class="WpfApp3.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp3"xmlns:prism="http://prismlibrary.com/"><Application.Resources></Application.Resources>
</prism:PrismApplication>

在这里插入图片描述

/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : PrismApplication
{protected override Window CreateShell(){return Container.Resolve<MainWindow>();}protected override void RegisterTypes(IContainerRegistry containerRegistry){//throw new NotImplementedException();}
}
安装 模板 prism Template pack

在这里插入图片描述
在这里插入图片描述

DirectoryModuleCatalog、XamlModuleCatalog、ConfigurationModuleCatalog 都间接继承IModuleCatalog

在这里插入图片描述

Prism 区域

在这里插入图片描述
在这里插入图片描述
》》 prism:ViewModelLocator.AutoWireViewModel=“True”,
》》View要和ViewModel自带匹配,不需要 this.DataContext = new ViewModel();
》》需要遵循一个些规定, ViewModels 中的View名称+ViewModel 这种命名规则

<Window x:Class="BlankApp2.Views.MainView"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" ><Grid><Grid.RowDefinitions><RowDefinition Height="50"></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><StackPanel Orientation="Horizontal" HorizontalAlignment="Right"><Button Content="模块A" Command="{Binding OpenCommand}" CommandParameter="ViewA"></Button><Button Content="模块B" Command="{Binding OpenCommand}" CommandParameter="ViewB"></Button></StackPanel><ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion" /></Grid>
</Window>
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using System;namespace BlankApp2.ViewModels
{public class MainViewModel : BindableBase{private string _title = "Prism Application";public string Title{get { return _title; }set { SetProperty(ref _title, value); }}private readonly IRegionManager _regionManager;public MainViewModel(IRegionManager regionManager){this._regionManager = regionManager;this.OpenCommand = new DelegateCommand<string>(Open);}private void Open(string obj){_regionManager.Regions["ContentRegion"].RequestNavigate(obj);}public  DelegateCommand<string> OpenCommand { get; private set; }}
}
using BlankApp2.Views;
using Prism.Ioc;
using System.Windows;namespace BlankApp2
{/// <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<ViewA>();           containerRegistry.RegisterForNavigation<ViewB>();//可以不使用默认匹配规则,自己指定对应的上下文//containerRegistry.RegisterForNavigation<ViewA,ViewAViewModel>();//containerRegistry.RegisterForNavigation<ViewA,ViewBViewModel>();}}
}

模块化 《1》 强引用

在这里插入图片描述
》》》通过prism Blank APP WPF 创建一个wpf应用
在这里插入图片描述
在这里插入图片描述
》》》新建模块步骤

  1. 新建wpf应用程序
  2. nugut 》》Prism.DryIoc
  3. 删除 App.xaml AssembylyInfo.cs MainWindow.xaml 这三个文件,同时把项目修改 类库
  4. 新建Views 文件夹 存放 视图文件
  5. 新建一个 项目名称+Profile 命名的 类

在这里插入图片描述
在这里插入图片描述

using ModuleA.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ModuleA
{public class ModuleAProfile : IModule{public void OnInitialized(IContainerProvider containerProvider){// throw new NotImplementedException();}public void RegisterTypes(IContainerRegistry containerRegistry){//ViewA  是Views下面的 视图文件containerRegistry.RegisterForNavigation<ViewA>();}}
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
需要在主程序 引用模块
在这里插入图片描述

在这里插入图片描述

模块化 《2》 利用目录,不需要引用这些模块的dll,上面的方式需要引用dll

在这里插入图片描述

using BlankApp2.Views;using Prism.Ioc;
using Prism.Modularity;using System.Windows;namespace BlankApp2
{/// <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<ViewA>();//containerRegistry.RegisterForNavigation<ViewB>();}protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog){//moduleCatalog.AddModule<StudentProfile>();//moduleCatalog.AddModule<ModuleAProfile>();//moduleCatalog.AddModule<ModuleCProfile>();//base.ConfigureModuleCatalog(moduleCatalog);}protected override IModuleCatalog CreateModuleCatalog(){return new DirectoryModuleCatalog() { ModulePath = @".\Modules" };}}
}

在这里插入图片描述

模块化 配置文件的方式可以使用App.config进行配置,也可以使用xml文件的方式。 都需要把模块dll引入

主程序 添加 配置文件app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="modules" type="Prism.Modularity.ModulesConfigurationSection, Prism.Wpf" /></configSections><startup></startup><modules><module assemblyFile="ModuleA.dll" moduleType="ModuleA.ModuleAProfile, ModuleA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="ModuleAProfile" startupLoaded="True" /></modules>
</configuration>

在这里插入图片描述

xaml 配置文件

在这里插入图片描述

<m:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:m="clr-namespace:Prism.Modularity;assembly=Prism.Wpf"><m:ModuleInfo ModuleName="ModuleAProfile" ModuleType="ModuleA.ModuleAProfile, ModuleA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /></m:ModuleCatalog>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

using ModuleA.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ModuleA
{public class ModuleAProfile : IModule{public void OnInitialized(IContainerProvider containerProvider){// throw new NotImplementedException();var regionManager = containerProvider.Resolve<IRegionManager>();regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));}public void RegisterTypes(IContainerRegistry containerRegistry){//containerRegistry.RegisterForNavigation<ViewA>();}}
}

这篇关于wpf prism 《1》、区域 、模块化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117880

相关文章

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户

javascript的模块化

1. 无模块化 script标签引入js文件,相互罗列,但是被依赖的放在前面,否则使用就会报错。如下: <script src="jquery.js"></script><script src="jquery_scroller.js"></script><script src="main.js"></script><script src="other1.js"></script><scri

GraphPad Prism 10 for Mac/Win:高效统计分析与精美绘图的科学利器

GraphPad Prism 10 是一款专为科研工作者设计的强大统计分析与绘图软件,无论是Mac还是Windows用户,都能享受到其带来的便捷与高效。该软件广泛应用于生物医学研究、实验设计和数据分析领域,以其直观的操作界面、丰富的统计方法和多样化的图表样式,成为科学研究的得力助手。 数据处理与整理 GraphPad Prism 10 支持从多种数据源导入数据,如Excel、CSV文件及数据库

WPF入门到跪下 第十三章 3D绘图 - 3D绘图基础

3D绘图基础 四大要点 WPF中的3D绘图涉及4个要点: 视口,用来驻留3D内容3D对象照亮部分或整个3D场景的光源摄像机,提供在3D场景中进行观察的视点 一、视口 要展示3D内容,首先需要一个容器来装载3D内容。在WPF中,这个容器就是Viewport3D(3D视口),它继承自FrameworkElement,因此可以像其他元素那样在XAML中使用。 Viewport3D与其他元素相

JVM - Java内存区域

文章目录 目录 文章目录 运行时数据区域 程序计数器 栈 Java虚拟机栈 本地方法栈 栈帧的组成 局部变量表 操作数栈 帧数据 堆 方法区 直接内存 总结 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存区域划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁时间,有的区域随着虚拟机进程的启动而一直存在,有的区域则是依赖