【问题标题】:Prism 4: How to hide items in an ItemsControl?Prism 4:如何隐藏 ItemsControl 中的项目?
【发布时间】:2011-03-01 00:38:27
【问题描述】:

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

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

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

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

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

  • 当一个模块被激活时加载按钮,当我切换到另一个模块时卸载它们,或者

  • 当一个模块被激活时显示按钮,当我切换到另一个模块时隐藏它们。

如何在 Prism 4 中做到这一点?感谢您的帮助。

【问题讨论】:

    标签: c# prism prism-4


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2018-10-30
      • 2013-08-20
      相关资源
      最近更新 更多