创建基于Prism框架的WPF应用(NET Framework)项目

创建基于Prism框架的WPF应用(NET Framework)项目

1、创建WPF(NET Framework)项目并整理结构

(1)、创建WPF(NET Framework)项目;

(2)、添加Views和ViewModels文件夹;

(3)、将MainWindow.xaml移到Views文件夹;

(4)、在ViewModels文件中新建 MainWindowViewModel.cs

(5)、修改App.xaml

csharp 复制代码
StartupUri="MainWindow.xaml"

改为

csharp 复制代码
StartupUri="Views/MainWindow.xaml"

(6)、修改MainWindow.xaml

csharp 复制代码
x:Class="DemoTest.MainWindow"

改为

csharp 复制代码
x:Class="DemoTest.Views.MainWindow"

(7)、修改MainWindow.xaml.cs

csharp 复制代码
namespace HscpTest

改为

csharp 复制代码
namespace HscpTest.Views

(8)、项目编译、运行正常。

2、升级为Prism框架

(1)、安装依赖包Prism.Unity 8.1.97
注意依赖包的版本,其它版本未必兼容。

(2)、在MainWindow.xaml中添加Prism引用,并自动开启

csharp 复制代码
xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"

(3)、修改MainWindow.xaml.cs

csharp 复制代码
public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindow_Loaded;
        }

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            var vm = DataContext as MainWindowViewModel;
            //throw new NotImplementedException();
        }

(4)、修改App.xaml

csharp 复制代码
<prism:PrismApplication x:Class="HscpTest.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:HscpTest"
             xmlns:prism="http://prismlibrary.com/"
             StartupUri="Views/MainWindow.xaml">
    <!--xmlns:prism="http://prismlibrary.com/"-->
    <Application.Resources>
         
    </Application.Resources>
</prism:PrismApplication>

(5)、修改App.xaml.cs

csharp 复制代码
protected override Window CreateShell()
        {
            return Container.Resolve<Views.MainWindow>();
            //throw new NotImplementedException();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            //containerRegistry.Register<Views.MainWindow>();
            //throw new NotImplementedException();
        }

(6)、删除App.xaml的启动设置

csharp 复制代码
StartupUri="Views/MainWindow.xaml"
相关推荐
samble3 天前
从零搭建半导体设备上位机(九):拖拽与交互,Adorner、DragDrop 与晶圆拖放信息
wpf·拖拽·adorner
郝学胜-神的一滴4 天前
AI 编程智能体 27:吃透MCP通信机制
人工智能·python·langchain·wpf·numpy·scikit-learn
波力海苔夹心脆6755 天前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
陈仓主教5 天前
# WPF CheckBox 控件详解与使用—WPF 中的控件(6)--复选框控件(CheckBox)
wpf
光泽雨7 天前
WPF 音视频四大核心方案对比
wpf·音视频
浪扼飞舟8 天前
WPF(数据绑定)
wpf
samble9 天前
从零搭建半导体设备上位机(四):单实例、启动流程与配置文件,App 里那 526 行到底在干什么
wpf·配置文件·单实例
浪扼飞舟9 天前
WPF(控件的继承树、内容控件、布局控件)
wpf
avi911112 天前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
吾与谁归in13 天前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf