我今天正在开发一个WPF项目,它有一个主导航窗口,然后在这个主窗口中加载4个页面(使用NavigationService.Nagivate ...)..在XAML中,这创建了很多重复的代码,所以我想将菜单重构为用户控件,然后我可以绑定到每个页面。我试图创建一个类来处理每个页面的导航和加载,但我发现NavigationServices是一个密封的类,无法实例化。
有人请提供有关如何使用菜单项创建用户控件的建议/解决方案,该菜单项允许导航到项目中的新页面。我已经能够在页面和后面的直接代码中执行此操作,但我没有运气试图将两者分开。如果这太模糊,请告诉我,我将提供更多代码示例。
提前致谢
答案 0 :(得分:1)
在用户控件上创建NavigationService依赖项属性。然后,在实例化控件时,将此属性绑定到应进行导航的容器的NavigationService。例如,页面可能会显示如下的用户控件:
<local:NavBox NavigationService="{Binding NavigationService, RelativeSource={RelativeSource AncestorType={x:Type NavigationWindow}}}" />
现在,当您的UserControl在其NavigationService上调用Navigate时,它将在包含NavigationWindow的NavigationService上有效地调用Navigate。 (这可以用显而易见的方式修改,以支持Frame或Page而不是NavigationWindow。)