带框架的UWP导航

时间:2017-08-23 10:30:20

标签: c# uwp .net-core

在我的MainPage.xaml中,我创建了一个SplitView。我正在使用SplitView窗格在我的页面之间导航。我没有打开新页面,而是使用页面框架填充SplitView内容。

我有一个名为ProjectsPage的活动框架。在这个框架中,我获得了每个项目的用户控件。现在我想点击一个用户控件并加载一个名为ProjectDetailsPage的新框架/页面。

我无法使用以下用户控件导航:

ContentFrame.Navigate(typeof(ProjectDetailsPage), project);

如何加载这个新框架?

1 个答案:

答案 0 :(得分:0)

您遇到的问题是UserControls不是Frames,而且它们也不会被用作一个。{1}}。最好的部分,导航只能在Frames上进行。

在您的案例场景中,简单来说,我的用户控件上有一个按钮,当我单击它时,我想将帧导航到另一个page。如果这是您的查询,那么有三种方法可以实现:

  1. 向上走visualtree,直到你找到一个框架然后用它来导航它。我只读过这样的方法,我也没试过。我个人不喜欢上visualtree
  2. 您可以在MainPageProjectsPage上创建导航框架的静态/单例实例,然后只需从usercontrol调用它,然后将其用于导航。这种方法的问题,因为你在这里直接从用户控件导航,你将无法在ProjectsPage上执行任何操作(如重置默认值,如果启用了NavigationCache则等等)导航,但作为一种解决方法,你可以把它放在你的OnNavigatingFrom覆盖中。
  3. 推荐:这是我为快速解决方案所做的工作,我使用的是活动,代表。我在后面的用户控制代码中写了一个快速事件(例如public event Action<MyClass> RequestViewChange;)。
  4. ProjectsPage中,您可以订阅userControl的此事件,当用户控件上的按钮被按下时,简单启动事件并让ProjectsPage听取它并采取相应行动。

    我使用Action<T>作为委托,因为我可以在不定义内容的情况下发送尽可能多的事件参数。

    我知道这是一种非常规的方法,但它的作用就像一个魅力。与上升视觉树相比,非常麻烦。请随意使用评论部分。