Prism区域何时可同时存在多个活动视图?
Prism区域ActiveViews为列表的原因及多活动视图场景
Prism的ActiveViews设计为列表而非单个对象,核心原因是区域支持同时激活多个视图的场景——你当前遇到的单活动视图只是默认行为,并非所有区域的固定规则。
多活动视图的触发场景及布局形式
容器控件支持多视图同时显示
当区域的宿主控件是允许同时渲染多个子元素的容器时(比如ItemsControl、WrapPanel、UniformGrid,或是自定义的多面板容器),Prism不会强制单一激活状态。典型场景如仪表盘界面:多个数据卡片视图同时展示在界面上,用户可以和任意卡片交互,这些卡片都可被设为激活状态。手动控制视图激活状态
默认的ContentControl、TabControl这类宿主,Prism会在导航时自动将旧视图设为非激活、新视图设为激活。但对于多元素容器,你可以通过代码手动激活多个视图:// 向区域添加多个视图 var view1 = Container.Resolve<DashboardCard1>(); var view2 = Container.Resolve<DashboardCard2>(); var region = RegionManager.Regions["DashboardRegion"]; region.Add(view1); region.Add(view2); // 激活两个视图 region.Activate(view1); region.Activate(view2); // 此时ActiveViews会包含两个元素 var activeViews = region.ActiveViews.ToList();自定义区域激活行为
你也可以通过实现自定义的IRegionBehavior,修改区域的激活规则,让原本单激活的容器(比如TabControl)支持多视图激活——这类场景多用于特殊业务需求。
简单来说,ActiveViews的列表设计是为了兼容从单视图切换到多视图激活的所有场景,让区域的API具备足够的灵活性。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

