感谢up主做出的贡献,方便大家的学习。
视频所在连接
https://www.bilibili.com/video/BV1Ei4y1F7du?p=6&spm_id_from=pageDriver、
以下是我学习过程的笔记。
创建prism项目
注意重写接口
安装prism的项目模板
网络不行 下载不了,自己跑到网上下载
https://marketplace.visualstudio.com/items?itemName=BrianLagunas.PrismTemplatePack
我电脑安装了多个vs,只能识别出来vs2019,并且在vs查找,也确实只有vs2019能够查找出来,
安装成功。
创建空白应用程序
解决办法:升级vs2019到最新版,能够解决问题,如果不行,充钱能解决!
基本上就是我们创建的空模板
Region
指定regon代码代码:
同时还提供了对区域模块的获取
var region = regionmanger.Regions["ContentRegion"];
官方实现了几种适配器
只有实现了适配器才能动态玩contentcontrol添加内容
如果这样写会报错,因为官方没有实现这个的适配器
没有stackpanel是适配器就需要自己写适配器
定义适配器类,基层于适配器基类,这是个泛形类
这样就实现了一个区域适配器
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace WpfPrismApplication.Adapter
{
public class StackPanelAdapter : RegionAdapterBase
{
public StackPanelAdapter(IRegionBehaviorFactory regionBehaviorFactory) : base(regionBehaviorFactory)
{
}
protected override void Adapt(IRegion region, StackPanel regionTarget)
{
//监测区域中视图是否发生变化,比如给stackpanel添加按钮时候,这个事件就会被触发
region.Views.CollectionChanged += (s, e) => {
//add behavior
if (e.Action==System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
foreach (FrameworkElement item in e.NewItems)
{
regionTarget.Children.Add(item);
}
}
};
}
protected override IRegion CreateRegion()
{
return new Region();
}
}
}
然后再app.xmal.cs中添加区域适配器
效果如下:
注意需要再mainwindow中注册两个区域