WPF Prism框架搭建

WPF Prism框架搭建

1.引入Prism框架

在Nuget包管理器中搜索Prism,并添加到项目中

在这里插入图片描述

2.在项目中使用prism框架

2.1 修改app.xaml

  • 删除项目中自带的StartupUri

    在这里插入图片描述

  • 修改Application节点为prism:PrismApplication

  • 引入prism命名空间

    在这里插入图片描述

<prism:PrismApplication x:Class="WpfPrismSimple.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfPrismSimple"
             xmlns:prism="http://prismlibrary.com/">
    <Application.Resources>
        <ResourceDictionary>
            
            <!--  全局样式  -->
            ...

            <ResourceDictionary.MergedDictionaries>
                <!--  样式模板  -->
                ...
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</prism:PrismApplication>

2.2 修改app.xaml.cs

  • 将原继承的Application替换成PrismApplication
  • 实现PrismApplication的抽象方法
    • CreateShell
    • RegisterTypes
  • 使用容器构建界面显示
public partial class App : PrismApplication
{
   
   
    protected override Window CreateShell()
    {
   
   
        return Container.Resolve<MainWindow>();
    }

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
   
   
        
    }
}

2.3 基类报错的解决方式

如果出现 error CS0263: “App”的分部声明一定不能指定不同的基类 的错误,就使用下面的方式解决

  • 创建自定义类MyPrismApplication继承自 Prism.Unity.PrismApplication
  • 在app.cs中继承自MyPrismApplication
  • 修改对应的xaml引用

app.cs.xaml

<prism:MyPrismApplicationx:Class="WpfPrismSimple.App"       
             xmlns:prism="clr-namespace:CCTVControl.Common">  
  	...
</prism:PrismApplication>

cs类

public class MyPrismApplication : Prism.Unity.PrismApplication
{
    protected override Window CreateShell()
    {
        throw new NotImplementedException();
    }

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        throw new NotImplementedException();
    }
}



public partial class App : MyPrismApplication 
{
    ...
}

3.实现Mvvm

3.1 View和ViewModel自动关联

  • View文件必须放在Views文件夹下,ViewModel文件必须放在ViewModels文件夹下

  • ViewModel命名必须是View文件名称+ViewModel结尾

  • View文件的xaml中需要增加自动关联属性

    xmlns:prism="http://prismlibrary.com/"
    xmlns:prism="http://prismlibrary.com/"
    prism:ViewModelLocator.AutoWireViewModel="True"
    

    在这里插入图片描述

3.2 View和ViewModel手动关联

  • 通过手动在App类中的RegisterTypes方法中关联View和ViewModel
protected 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值