如何实现WPF导航控件呈现各种派生类型的帧,全部使用UserControl作为基础

时间:2012-09-26 23:29:41

标签: c# .net wpf xaml user-controls

所以我有一个场景,我想实现从UserControl派生的WPF NavigationControl。在那个NavigationControl上,我有两个要求,处理后退/前进导航的历史记录(足够简单),并且能够在视觉上呈现从NavigationFrameBase类型派生的任何控件。同样从UserControl派生的NavigationFrameBase可以以多种形式呈现,因为多个控件将从此类型继承,但NavigationFrameBase应该向NavigationControl提供一种通知形式,以通知它用户与从NavigationFrameBase派生的类型的内容进行交互。请求导航操作,允许NavigationControl呈现新的NavigationFrameBase。

我的问题有两个方面:

  • 设计NavigationControl以包含它将呈现的NavigationFrameBase实例的最佳方法是什么
  • WPF处理child->父请求系统的正确方法是什么?路由/附加事件似乎是正确的,但我可以看到中介模式提供相同的功能。

1 个答案:

答案 0 :(得分:1)

这取决于您期望父母与子女之间的沟通方式。如果只是一个NavigationControl监听事件和反应的问题,那么简单的事件处理模式就可以工作。

但是,如果您需要NavigationControl来影响NavigationFrames(例如,要禁用/启用,或者在下拉菜单的情况下,您需要在另一个打开时关闭任何打开的下拉菜单等)或者允许一个NavigationFrame影响一个兄弟,然后你需要使用一个中介模式,或者在NavigationFrameBase上公开回调方法来处理这些操作。

如果不了解您的预期用例,很难给出更多细节。