棱镜4:如何隐藏ItemsControl中的项目?

时间:2011-03-01 00:38:27

标签: c# prism prism-4

我正在创建一个Prism 4演示应用程序来学习新框架,专注于视图切换。该应用程序有几个区域,其中一个是ItemsControl,它包含当前活动模块中的一个或多个按钮。

我在每个模块的Initilize()方法中使用区域管理器注册按钮。这是第一个模块的注册码:

RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton1));
RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton2));

第二个模块以相同的方式注册其按钮。我使用RequestNavigate()在两个模块之间切换。

这是我的问题:来自两个模块的按钮在ItemsControl中可见,而不仅仅是活动模块中的按钮。我考虑将ItemsControl更改为ContentControl并将按钮放在StackPanel中,但由于我不会在这里烦你的原因,这对我不起作用。我需要做的是:

  • 激活模块时加载按钮,当我切换到其他模块时卸载它们,或

  • 激活模块时显示按钮,并在切换到其他模块时隐藏它们。

我如何在棱镜4中做到这一点?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我找到了答案。在视图或其视图模型上实现IRegionMemberLifetime接口。该接口由一个只读的布尔属性KeepAlive组成。如果该属性设置为true,则视图将在用户导航后保持活动状态。如果属性设置为false,则将卸载视图。请参见“Microsoft Prism开发人员指南”(第4版)。 121。