2009-10-07 105 views
2

在我的应用程序中,我只需要一次可见的视图,这就是为什么我在我的shell中使用ContentControl的原因。问题是,如果我有一个视图可见(让我们说View1)并激活View2,那么一切都很好。现在,用户在View2上按下“关闭”按钮,之后用户最终将立即查看黑屏,因为现在没有视图处于活动状态。我想区域适配器在激活下一个视图之前关闭当前活动的视图。WPF - Prism - 激活和停用ContentControl区域中的视图

如何确保先前活动的视图再次变为激活(从我的示例中的视图1)?我是否需要不同类型的区域才能实现此功能?

由于提前,

阿里

回答

1

不幸的是(因为你发现了),这是不是行为。你必须跟踪你的观点并自己激活前一个。

Jeremiah评论并让我思考一个这样的行为。我认为ActiveAware行为可能是追踪活动/非活动事件并可能对其采取行动的行为的一个很好的模型。

以下是ActiveAware行为的源代码。你可以用这个模型作为你想要的行为的起点,我很确定。 http://compositewpf.codeplex.com/SourceControl/changeset/view/26112#496678

+0

这就是我目前的做法。你认为自定义区域适配器/行为是否适合这样的事情? –

+0

好的建议。我会发布一些可能是一个很好的起点。我认为ActiveAware的行为在逻辑上非常接近。 –

+0

Jeremiah,你现在用什么方法来跟踪这个?从某种意义上讲,您如何处理其他模块中存在的视图?如果Module1中的一个视图被禁用,则前一个视图可能存在于Module2中。事件聚合还是某种服务?最终谁管理视图列表?感谢您的建议,我还会检查Anderson的想法。 – Ali

相关问题