创建基于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"
相关推荐
松☆5 小时前
终章:构建完整生态——Flutter + OpenHarmony 分布式应用开发全景指南(含性能调优与发布实践)
flutter·wpf
松☆5 小时前
高阶实战:基于 Flutter 的 OpenHarmony 分布式软总线多设备协同应用开发
wpf
松☆5 小时前
终极挑战:Flutter 应用在 OpenHarmony 上实现跨设备无缝流转(Continuation)与软总线协同
flutter·wpf
她说彩礼65万5 小时前
WPF SynchronizationContext的使用
wpf
云雾J视界5 小时前
分布式AI框架选型困局:SintolRTOS vs Ray vs Horovod,性能压测全解析
tensorflow·wpf·horovod·ray·分布式ai·sintolrtos
豫狮恒21 小时前
OpenHarmony Flutter 分布式多模态交互:融合音视频、手势与环境感知的跨端体验革新
flutter·wpf·openharmony
豫狮恒1 天前
OpenHarmony Flutter 分布式数据共享实战:从基础存储到跨设备协同
flutter·wpf·openharmony
500841 天前
鸿蒙 Flutter 隐私合规:用户授权中心与数据审计日志
flutter·华为·开源·wpf·音视频
豫狮恒1 天前
OpenHarmony Flutter 分布式软总线实战:跨设备通信的核心技术与应用
flutter·wpf·harmonyos
Hello.Reader1 天前
Flink SQL 的 LIMIT 子句语义、坑点与实战技巧
sql·flink·wpf