WPF Prism PrismApplication OnInitialized()

news/2025/9/23 17:10:49/文章来源:https://www.cnblogs.com/Fred1987/p/19107544
Install-Package Prism.Wpf;
Install-Package Prism.DryIOC;

 

 

//app.xaml
<prism:PrismApplication x:Class="WpfApp38.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp38"xmlns:prism="http://prismlibrary.com/" ><Application.Resources></Application.Resources>
</prism:PrismApplication>//app.xaml.cs
using Prism.DryIoc;
using Prism.Ioc;
using System.Windows;
using WpfApp38.ViewModels;
using WpfApp38.Views;namespace WpfApp38
{/// <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){containerRegistry.RegisterForNavigation<ViewA, ViewAViewModel>("ViewA");containerRegistry.RegisterForNavigation<ViewB, ViewBViewModel>("ViewB");containerRegistry.RegisterForNavigation<MainWindow, MainWindowViewModel>("MainWindow");}protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings){base.ConfigureRegionAdapterMappings(regionAdapterMappings);}protected override void OnInitialized(){base.OnInitialized();var regionManager=Container.Resolve<IRegionManager>();regionManager.RequestNavigate("MainRegion", "ViewA");}protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);}}}//MainWindow.xaml
<Window x:Class="WpfApp38.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp38"mc:Ignorable="d"WindowState="Maximized"Title="{Binding MainVMTitle,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"><Window.Resources><Style TargetType="Button"><Setter Property="FontSize" Value="50"/></Style></Window.Resources><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Button Content="View A"Grid.Row="0"Grid.Column="0"Command="{Binding NavigateCommand}"CommandParameter="ViewA"/><Button Content="View B"Grid.Row="0"Grid.Column="1"Command="{Binding NavigateCommand}"CommandParameter="ViewB"/><ContentControl Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"Background="Cyan"prism:RegionManager.RegionName="MainRegion"VerticalAlignment="Stretch"/></Grid>
</Window>//MainWindow.xaml.cs
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 WpfApp38
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}}
}//MainWindowViewModel.cs
using System;
using System.Collections.Generic;
using System.Text;namespace WpfApp38.ViewModels
{public class MainWindowViewModel : BindableBase{private readonly IRegionManager regionManager;public MainWindowViewModel(IRegionManager regionManagerValue){regionManager = regionManagerValue;MainVMTitle=$"In Main Window,{DateTime.Now.ToString("yyyy-MM-dd:HH-mm-ss")}";System.Timers.Timer tmr = new System.Timers.Timer();tmr.Elapsed+=Tmr_Elapsed;tmr.Interval=1000;tmr.Start();NavigateCommand=new DelegateCommand<string>(NavigateCommandExecuted);}private void NavigateCommandExecuted(string viewName){if (!string.IsNullOrEmpty(viewName)){regionManager.RequestNavigate("MainRegion", viewName);}}private void Tmr_Elapsed(object? sender, System.Timers.ElapsedEventArgs e){MainVMTitle=$"In Main Window,{DateTime.Now.ToString("yyyy-MM-dd:HH-mm-ss")}";}private string mainVMTitle;public string MainVMTitle{get{return mainVMTitle;}set{SetProperty(ref mainVMTitle, value);}}public DelegateCommand<string> NavigateCommand { get; set; }}
}//ViewA.xaml
<UserControl x:Class="WpfApp38.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:WpfApp38.Views"mc:Ignorable="d" VerticalAlignment="Stretch"HorizontalAlignment="Stretch"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"><Grid><Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><ListBox Grid.Row="0"ItemsSource="{Binding SlimBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsVirtualizing="True"VirtualizingPanel.IsContainerVirtualizable="True"VirtualizingPanel.VirtualizationMode="Recycling"ScrollViewer.IsDeferredScrollingEnabled="True"><ListBox.ItemTemplate><DataTemplate><Grid Width="{Binding DataContext.LbxWidth,RelativeSource={RelativeSource AncestorType=UserControl}}"Height="{Binding DataContext.LbxHeight,RelativeSource={RelativeSource AncestorType=UserControl}}"><Grid.Resources><Style TargetType="TextBlock"><Setter Property="FontSize" Value="50"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="FontSize" Value="100"/><Setter Property="Foreground" Value="Red"/></Trigger></Style.Triggers></Style></Grid.Resources><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlock Text="{Binding Id}" Grid.Column="0" Width="Auto"/><TextBlock Text="{Binding Name}" Grid.Column="1"  Width="Auto"/><TextBlock Text="{Binding Title}" Grid.Column="2"  Width="Auto"/><TextBlock Text="{Binding ISBN}" Grid.Column="3"  Width="Auto"TextWrapping="Wrap"/></Grid></DataTemplate></ListBox.ItemTemplate></ListBox><Button Grid.Row="1"Content="View A ReLoad Data"Command="{Binding LoadViewADataCommand}"/></Grid>
</UserControl>//ViewA.xaml.cs
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 WpfApp38.Views
{/// <summary>/// Interaction logic for ViewA.xaml/// </summary>public partial class ViewA : UserControl{public ViewA(){InitializeComponent();}}
}//ViewB.xaml
<UserControl x:Class="WpfApp38.Views.ViewB"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:WpfApp38.Views"xmlns:prism="http://prismlibrary.com/"mc:Ignorable="d" VerticalAlignment="Stretch"HorizontalAlignment="Stretch"prism:ViewModelLocator.AutoWireViewModel="True"><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><TextBlock Grid.Row="0"Text="{Binding ViewBTitle,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"><TextBlock.Style><Style TargetType="TextBlock"><Setter Property="FontSize" Value="50"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Foreground" Value="Red"/><Setter Property="FontSize" Value="100"/></Trigger></Style.Triggers></Style></TextBlock.Style></TextBlock><DataGrid Grid.Row="1"ItemsSource="{Binding BooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsVirtualizing="True"VirtualizingPanel.VirtualizationMode="Recycling"ScrollViewer.IsDeferredScrollingEnabled="True"VirtualizingPanel.CacheLengthUnit="Pixel"VirtualizingPanel.CacheLength="100"><DataGrid.Columns><DataGridTemplateColumn><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid Width="{Binding DataContext.GridWidth,RelativeSource={RelativeSource AncestorType=UserControl}}"Height="{Binding DataContext.GridHeight,RelativeSource={RelativeSource AncestorType=UserControl}}"><Grid.Background><ImageBrush ImageSource="{Binding ImgSource}"/></Grid.Background><Grid.Resources><Style TargetType="TextBlock"><Setter Property="FontSize" Value="50"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="FontSize" Value="80"/><Setter Property="Foreground" Value="Red"/></Trigger></Style.Triggers></Style></Grid.Resources><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Id}"/><TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}"/><TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Title}"/><TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3"Text="{Binding ISBN}" HorizontalAlignment="Center"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid><Button Grid.Row="2"Content="ViewB ReLoad Data"FontSize="50"Command="{Binding LoadDataCommand}"/></Grid>
</UserControl>//ViewB.xaml.cs
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 WpfApp38.Views
{/// <summary>/// Interaction logic for ViewB.xaml/// </summary>public partial class ViewB : UserControl{public ViewB(){InitializeComponent();}}
}//ViewModelBViewModel.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Text;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using WpfApp38.Models;namespace WpfApp38.ViewModels
{public class ViewBViewModel : BindableBase{System.Timers.Timer tmr;public ViewBViewModel(){InitSlimBooksCollection();LoadDataCommand=new DelegateCommand(LoadDataCommandExecuted);           InitVariables();tmr= new System.Timers.Timer();tmr.Elapsed+=Tmr_Elapsed;tmr.Interval=1000;tmr.Start();}private void Tmr_Elapsed(object? sender, System.Timers.ElapsedEventArgs e){ViewBTitle=$"In ViewBTitle,UtcNow is {DateTime.UtcNow.ToString("yyyyMMddHHmmss")}";}private void InitVariables(){var mainWin = System.Windows.Application.Current.MainWindow;if (mainWin!=null){GridWidth= mainWin.ActualWidth;GridHeight= mainWin.ActualHeight/2;}}private void LoadDataCommandExecuted(){bool flowControl = InitSlimBooksCollection();if (!flowControl){return;}}private bool InitSlimBooksCollection(){var dir = @"../../../Images";if (!Directory.Exists(dir)){return false;}var imgs = Directory.GetFiles(dir);if (imgs==null ||!imgs.Any()){return false;}int imgsCount = imgs.Count();BooksCollection=new ObservableCollection<Book>();for (int i = 1; i<1001; i++){BooksCollection.Add(new Book(){Id=i,Name=$"Name_{i}", ISBN=$"ISBN_{i}_{Guid.NewGuid()}",Title=$"Title_{i}",ImgSource=GetImgSourceViaUrl(imgs[i%imgsCount])});}return true;}private ImageSource GetImgSourceViaUrl(string imgUrl){BitmapImage bmi = new BitmapImage();if (!File.Exists(imgUrl)){return bmi;}bmi.BeginInit();bmi.UriSource=new Uri(imgUrl, UriKind.RelativeOrAbsolute);bmi.CacheOption= BitmapCacheOption.OnDemand;bmi.EndInit();bmi.Freeze();return bmi;}public DelegateCommand LoadDataCommand { get; set; }private ObservableCollection<Book> booksCollection;public ObservableCollection<Book> BooksCollection{get{return booksCollection;}set{SetProperty(ref booksCollection, value);}}private double gridWidth;public double GridWidth{get{return gridWidth;}set{SetProperty(ref gridWidth, value);}}private double gridHeight;public double GridHeight{get{return gridHeight;}set{SetProperty(ref gridHeight, value);}}private string viewBTitle;public string ViewBTitle{get{return viewBTitle;}set{SetProperty(ref  viewBTitle, value);}}}
}

 

 

 

image

 

 

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公司微网站建设汽车网站建设

深度学习在图像识别中的革命性应用标志着计算机视觉领域的重大进步。以下是深度学习在图像识别方面的一些革命性应用&#xff1a; 1. **卷积神经网络&#xff08;CNN&#xff09;的崭新时代**&#xff1a; - CNN是深度学习在图像识别中的核心技术&#xff0c;通过卷积层、池化…

FOC之电机模型

概述FOC全称磁场定向控制,从该名称可推导出适用电机的几个特点:磁场是主动方 无机械换向 转子是永磁体符合以上特点的有直流无刷电机(BLDC)和永磁同步电机(PMSM)。实际上,这两种电机的总体结构是一样的,区别在于电…

使用shell脚本一键部署docker及docker-compose环境

准备安装包: 安装包邮箱留言获取 ahui6-docker-compose-binary-install.tar.gz 脚步内容: #!/bin/bash #auther: ahui6 #博客地址: https://www.cnblogs.com/ahui6#加载操作系统的变量,主要是ID变量。 . /etc/os-re…

网站seo文章只有网站才需要域名吗

准备在工作之余看看Python的东西 收录一些资料 Python初学者&#xff08;零基础学习Python、Python入门&#xff09;常见问题&#xff1a;书籍推荐、资料、社区 http://blog.csdn.net/xiaowanggedege/article/details/8566606 小甲鱼零基础入门学习Python(全87集) http://pan.b…

怎么修改网站关键词精准引流怎么推广

需求背景 做一个OCR识别的功能,需要导出原图和识别出来的结果的图纸,将数据导出. 解决方案 EasyPOI中可以用字节类型,导出图片,可以将图片存放的url 转成字节,然后导出.但是整个导出过程耗时较久。 具体代码 /*** 草图OCR识别记录-导出.** @param response: Http…

怎么打开google网站互联网营销推广服务商

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

pexels素材网站个人信用信息服务平台

CCS6软件安装 第一步&#xff1a;点击右键->以管理员身份安装&#xff08;安装路径不能有中文&#xff09; 第二步&#xff1a;安装驱动

购物网站开发技术湘icp备 网站建设 农业 湖南

本文主要包括以下内容 阈值分割技术基于区域的图像分割技术本章的典型案例 基于LoG和Canny算子的精确边缘检测基于Hough变换的直线检测图像的四叉树分解 阈值分割 我们曾在3.5节学习过灰度阈值变换的相关知识&#xff0c; 利用灰度阈值变换分割图像就称为阈值分割&#xf…

龙华建设发展有限公司网站郑州膏药网站建设

&#xff08;1&#xff09;为什么成了付费专栏&#xff1f; 知识付费时代&#xff0c;多做一些尝试免费内容非常容易被其他网站爬虫获取&#xff0c;付费是某种意义上的版权保护付费即意味着责任&#xff0c;有利于提高专栏质量&#xff0c;驱使作者对读者、对内容更负责 &…

福清营销型网站建设方案免费推广产品的平台

题目大意&#xff1a; 有n个城市&#xff0c;有一部分是A国的&#xff0c;有一部分是B国的&#xff08;小于A国的&#xff09;&#xff0c;A国每个城市都有一枚导弹&#xff08;只有一枚&#xff09;&#xff0c;炸毁别的城市的时间是到这个城市的距离&#xff0c;请问A国最快…

浙江台州网络设计网站微信自助下单小程序怎么弄

目录 用法 1. 增 2. 删 3. 查 4. 交&#xff0c;并 编码方式 应用场景 Redis 中的 Zset&#xff08;有序集合&#xff09;是一种将元素按照分数进行排序的数据结构。与上篇写的SetRedis 中的 Set 数据结构详解不同&#xff0c;Zset 中的每个元素都关联一个浮点数类型的…

哪个大学的网站做的最好看深圳代理记账公司前十名

学习过linux的同学应该都知道&#xff0c;linux系统几乎都是用c编写&#xff0c;包括现在主流的android,ios系统&#xff0c;都是使用c编程。为了方便大家学习C语言&#xff0c;小编搜集整理了市面几乎所有的C语言书籍&#xff0c;下面给出部分比较有名的&#xff0c;在微信公众…

paddleOCR 图片识别

PaddleOCR 中,det、rec、cls 分别代表 OCR 流水线中的三个关键模块。 1. det - 文本检测(Text Detection) 功能定位:在图像中找出文本所在的位置边界框:为每个文本区域生成边界框文本行检测:检测文本行或单词的位…

手机网站制作公司工业和信息化部网站备案系统

大家在面试数据分析岗或其他岗位的时候&#xff0c;时常会被问到一些SQL题&#xff0c;我今天就将常被问到的一些SQL题及答案整理下&#xff0c;给大家做个参考&#xff01;案例所使用的表为&#xff1a;&#xff08;一&#xff09;各种连接函数的区别&#xff1f;&#xff08;…

使用命令行powershell修改系统变量

本文主要讲解通过命令行pwsh修改环境变量。 工具pwshGetEnvironmentVariable函数 获取环境变量 第一个参数:变量名称 第二个参数:变量类型,User、Machine,二选一 SetEnvironmentVariable函数 用来设置环境变量 第一…

东坑东莞网站建设wordpress加黑字体

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 王自如的一番话引来了众多围攻&#xff0c;格力已报警&#xff0c;高管遭到侮辱诽谤。这应该是近年来少见的大企业和网络大v之间公开翻脸互撕的场景了! 就在今天格力就高管遭自媒体侮辱诽谤报案。…

化妆品网站建设策划书html5静态模板

一、目标 实现一个函数&#xff0c;传入两个datetime类型的参数&#xff0c;返回double类型的工作日天数 二、思路 如何计算差值&#xff1f; 如果开始时间和结束时间在同一天&#xff1a;实现同 datediff(end, start, ‘ss’) / 86400.0 如果开始时间和结束时间在不同天&am…

个人网站 主机怎样利用云盘做电影网站

2003年夏天的一个周日&#xff0c;AI教父Hinton在多伦多大学的办公室里敲代码&#xff0c;突然响起略显莽撞的敲门声。门外站着一位年轻的学生&#xff0c;说自己整个夏天都在打工炸薯条&#xff0c;但更希望能加入Hinton的实验室工作。Hinton问&#xff0c;你咋不预约呢&#…

企业建网站费用苏州做视频网站广告公司

在西班牙巴塞罗那移动通信大会上&#xff0c;华为公司展台用电子屏展示5G技术。新华社资料图近日&#xff0c;第十二届音乐盛典咪咕汇在上海梅赛德斯奔驰文化中心开幕。周杰伦、张惠妹、G.E.M.邓紫棋等华语乐坛著名歌手悉数亮相。在上海移动、咪咕、华为的合作之下&#xff0c;…

公司做网站找谁公司做网站找谁网站建设设计制作维护

一 清除数据中恒定不变值 如果某个数据长时间不变&#xff0c;默认异常&#xff0c;清除掉该部分数据&#xff1a; # 使用 shift 和 cumsum 来创建一个分组键&#xff0c;每次值改变都会增加组号 g (df[沉淀池3号进水流量] ! df[沉淀池3号进水流量].shift()).cumsum()# 使用…