尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

WPF Prism

WPF Prism
📅 发布时间:2026/6/18 7:00:48
Install-Package Prism.WPF;
Install-Package Prism.DryIOC;

 

 

//App.xaml
<prism:PrismApplication x:Class="WpfApp37.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp37"xmlns:prism="http://prismlibrary.com/"><Application.Resources></Application.Resources>
</prism:PrismApplication>//App.xaml.cs
using System.Configuration;
using System.Data;
using System.Windows;
using Prism.DryIoc;
using Prism.Ioc;
using WpfApp37.ViewModels;
using WpfApp37.Views;namespace WpfApp37
{/// <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");containerRegistry.RegisterDialog<MessageBoxView, MessageBoxViewModel>("MessageBoxView");}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);}}}

 

//ViewA.xaml
<UserControl x:Class="WpfApp37.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:WpfApp37.Views"mc:Ignorable="d"  xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"><Grid Margin="20"><StackPanel><TextBlock Text="{Binding Message}"FontSize="50"FontWeight="Bold"Foreground="Blue"/><Button Content="Click Me!"Command="{Binding ClickCommand}"Margin="0,10,0,0"Padding="10"/><TextBlock Text="{Binding ClickCount}"FontSize="50"Margin="0,10,0,0"/></StackPanel>            </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 WpfApp37.Views
{/// <summary>/// Interaction logic for ViewA.xaml/// </summary>public partial class ViewA : UserControl{public ViewA(){InitializeComponent();}}
}//using System;
using System.Collections.Generic;
using System.Text;namespace WpfApp37.ViewModels
{public class ViewAViewModel: ViewModelBase{private int clickCount;public int ClickCount{get{return clickCount;}set{SetProperty(ref clickCount, value);}}private string message = "Welcome to View A!";public string Message{get{return message;}set{SetProperty(ref message, value);}}public DelegateCommand ClickCommand { get; set; }public ViewAViewModel(){Title="View A";ClickCommand=new DelegateCommand(ClickCommandExecuted);}private void ClickCommandExecuted(){ClickCount++;Message=$"Button clicked {ClickCount} times";}}
}

 

 

//ViewB.xaml
<UserControl x:Class="WpfApp37.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:WpfApp37.Views"mc:Ignorable="d"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"><Grid Margin="20"><Grid.RowDefinitions><RowDefinition Height="60"/><RowDefinition Height="*"/><RowDefinition Height="80"/></Grid.RowDefinitions><TextBlock Text="View B -Data Display"Grid.Row="0"FontSize="50"FontWeight="Bold"/><DataGrid  Grid.Row="1"ItemsSource="{Binding Items,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"AutoGenerateColumns="False"FontSize="30"Margin="0,10,0,0"VerticalAlignment="Stretch"><DataGrid.Columns><DataGridTextColumn Header="Id" Binding="{Binding Id}"/><DataGridTextColumn Header="Name" Binding="{Binding Name}"/><DataGridTextColumn Header="ISBN" Binding="{Binding ISBN}"/><DataGridTextColumn Header="Author" Binding="{Binding Author}"/></DataGrid.Columns></DataGrid><Button Grid.Row="2"FontSize="50"Content="Load Data"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 WpfApp37.Views
{/// <summary>/// Interaction logic for ViewB.xaml/// </summary>public partial class ViewB : UserControl{public ViewB(){InitializeComponent();}}
}//ViewBViewModel.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using WpfApp37.Models;namespace WpfApp37.ViewModels
{public class ViewBViewModel:ViewModelBase{private ObservableCollection<Book> items;public ObservableCollection<Book> Items{get{return items;}set{SetProperty(ref items, value);}}public DelegateCommand LoadDataCommand { get; set; }public ViewBViewModel(){Title="View B";Items=new ObservableCollection<Book>();LoadDataCommand=new DelegateCommand(LoadDataCommandExecuted);}private void LoadDataCommandExecuted(){Items.Clear();for(int i = 1; i<1001; i++){Items.Add(new Book(){Id=i,Name=$"Name_{i}",ISBN=$"ISBN_{i}_{Guid.NewGuid()}",Author=$"Author_{i}_{Guid.NewGuid()}"});}}}
}//mainView.xaml
<Window x:Class="WpfApp37.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:WpfApp37"mc:Ignorable="d"WindowState="Maximized"Title="{Binding MainTitle}" Height="450" Width="800"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"><Grid><Grid.RowDefinitions><RowDefinition Height="100"/><RowDefinition Height="100"/><RowDefinition Height="*"/></Grid.RowDefinitions><!--Header--><StackPanel Grid.Row="0"Orientation="Horizontal"Background="LightBlue"><TextBlock Text="{Binding Title}" FontSize="50" FontWeight="Bold"/><TextBlock Text="Prism DryIOC Application" Margin="10,0,0,0"/></StackPanel><!--Navigation Menu--><StackPanel Grid.Row="1" Orientation="Horizontal" Margin="10"><Button Content="View A" Command="{Binding NavigateCommand}"CommandParameter="ViewA"Margin="5" Padding="10"/><Button Content="View B" Command="{Binding NavigateCommand}"CommandParameter="ViewB"Margin="5" Padding="10"/><Button Content="Show Dialog" Command="{Binding ShowDialogCommand}"Margin="5" Padding="10"/></StackPanel><!--Content Region--><!--<Border Grid.Row="2" Margin="10" BorderBrush="DarkGray" BorderThickness="1"Background="LightGray">--><!-- Remove this background later --><!--<ContentControlprism:RegionManager.RegionName="MainRegion"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"/></Border>--><ContentControl Grid.Row="2"prism:RegionManager.RegionName="MainRegion"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"/></Grid>
</Window>//MainViewModel
<Window x:Class="WpfApp37.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:WpfApp37"mc:Ignorable="d"WindowState="Maximized"Title="{Binding MainTitle}" Height="450" Width="800"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"><Grid><Grid.RowDefinitions><RowDefinition Height="100"/><RowDefinition Height="100"/><RowDefinition Height="*"/></Grid.RowDefinitions><!--Header--><StackPanel Grid.Row="0"Orientation="Horizontal"Background="LightBlue"><TextBlock Text="{Binding Title}" FontSize="50" FontWeight="Bold"/><TextBlock Text="Prism DryIOC Application" Margin="10,0,0,0"/></StackPanel><!--Navigation Menu--><StackPanel Grid.Row="1" Orientation="Horizontal" Margin="10"><Button Content="View A" Command="{Binding NavigateCommand}"CommandParameter="ViewA"Margin="5" Padding="10"/><Button Content="View B" Command="{Binding NavigateCommand}"CommandParameter="ViewB"Margin="5" Padding="10"/><Button Content="Show Dialog" Command="{Binding ShowDialogCommand}"Margin="5" Padding="10"/></StackPanel><!--Content Region--><!--<Border Grid.Row="2" Margin="10" BorderBrush="DarkGray" BorderThickness="1"Background="LightGray">--><!-- Remove this background later --><!--<ContentControlprism:RegionManager.RegionName="MainRegion"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"/></Border>--><ContentControl Grid.Row="2"prism:RegionManager.RegionName="MainRegion"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"/></Grid>
</Window>//ViewModelBase.cs
using System;
using System.Collections.Generic;
using System.Text;
using Prism.Mvvm;
using Prism.Commands;
using System.ComponentModel;
using System.Runtime.CompilerServices;namespace WpfApp37.ViewModels
{public class ViewModelBase :BindableBase{private string title = "Prism Application";public string Title{get{return title;}set{SetProperty(ref title, value);}}private bool isBusy;public bool IsBusy{get{return isBusy;}set{SetProperty(ref isBusy, value);}}}
}//book.cs
using System;
using System.Collections.Generic;
using System.Text;namespace WpfApp37.Models
{public class Book{public int Id { get;set; }public string Name { get;set; }public string ISBN { get;set; }public string Author { get; set; }}
}

 

 

 

 

image

 

 

 

 

 

 

image

 

相关新闻

  • PyTorch和cude版本不兼容导致无法检测到GPU
  • 2025无人机在低空物流中的应用实践
  • ssh如何打开可视化界面

最新新闻

  • PS 怎么删除背景色变成透明?4 种实操方法 + 导出透明 PNG 全流程
  • LDO线性稳压器核心参数解析与TC2054/55/2186选型实战指南
  • 2026年比较好的黄山化粪池管道疏通/附近管道疏通/黄山管道疏通专业公司推荐 - 品牌宣传支持者
  • 2026年诚信的四川冷链运输包装/成都纸塑包装/四川包装/成都水果包装长期合作厂家推荐 - 行业平台推荐
  • 【流形学习多模态语言变量分析基础】王阳明代数讲义之解释深度幻觉
  • 基于深度学习的YOLOv8的微表情识别 表情检测 微表情识别

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号