Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现一个WPF导航控件来呈现各种派生类型的帧,所有这些都使用UserControl作为基础_C#_.net_Wpf_Xaml_User Controls - Fatal编程技术网

C# 如何实现一个WPF导航控件来呈现各种派生类型的帧,所有这些都使用UserControl作为基础

C# 如何实现一个WPF导航控件来呈现各种派生类型的帧,所有这些都使用UserControl作为基础,c#,.net,wpf,xaml,user-controls,C#,.net,Wpf,Xaml,User Controls,所以我有一个场景,我想实现一个从UserControl派生的WPF NavigationControl。在这个NavigationControl上,我有两个要求:处理向后/向前导航的历史记录(足够简单),以及能够直观地显示从NavigationFrameBase类型派生的任何控件。NavigationFrameBase,也是从UserControl派生的,可能以多种形式呈现,因为多个控件将从该类型继承,但是NavigationFrameBase应该向NavigationControl提供一种通知

所以我有一个场景,我想实现一个从UserControl派生的WPF NavigationControl。在这个NavigationControl上,我有两个要求:处理向后/向前导航的历史记录(足够简单),以及能够直观地显示从NavigationFrameBase类型派生的任何控件。NavigationFrameBase,也是从UserControl派生的,可能以多种形式呈现,因为多个控件将从该类型继承,但是NavigationFrameBase应该向NavigationControl提供一种通知形式,通知它与从NavigationFrameBase派生的类型的内容交互的用户已请求导航操作,从而允许NavigationControl显示新的NavigationFrameBase

我的问题有两个:

  • 为了包含NavigationFrameBase的实例,设计NavigationControl的最佳方法是什么
  • WPF中处理子->父请求系统的正确方法是什么?路由/附加事件似乎是正确的,但我可以看到一个中介模式服务于相同的功能

这取决于父母和孩子之间的沟通方式。如果只是NavigationControl侦听事件并作出反应的问题,那么简单的事件处理模式将起作用

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


如果不了解更多关于预期用例的信息,就很难给出更多细节。

这与框架或导航窗口有什么区别?这是MS surface ScatterView项目的一部分。假设第一个选项就足够了,我不知道如何用XAML在WPF中建立这些关系我的XAML经验已经过时了(有几年了),但我相信当我做这种事情时,我会使用NavigationControl的代码来连接我在加载子NavigationFrameBase控件时关心的事件。所以它根本不是XAML,只是C#。我可以这样做,但它看起来不太像WPFlike:-p没错,但是如果你想到一个标准菜单,你通常不会指定菜单在点击菜单项时应该有什么行为(这是在幕后完成的)。在XAML中,实际上只指定要触发的本地事件处理。