在我的MainPage.xaml中,我创建了一个SplitView
。我正在使用SplitView
窗格在我的页面之间导航。我没有打开新页面,而是使用页面框架填充SplitView
内容。
我有一个名为ProjectsPage
的活动框架。在这个框架中,我获得了每个项目的用户控件。现在我想点击一个用户控件并加载一个名为ProjectDetailsPage
的新框架/页面。
我无法使用以下用户控件导航:
ContentFrame.Navigate(typeof(ProjectDetailsPage), project);
如何加载这个新框架?
答案 0 :(得分:0)
您遇到的问题是UserControls
不是Frames
,而且它们也不会被用作一个。{1}}。最好的部分,导航只能在Frames
上进行。
在您的案例场景中,简单来说,我的用户控件上有一个按钮,当我单击它时,我想将帧导航到另一个page
。如果这是您的查询,那么有三种方法可以实现:
visualtree
,直到你找到一个框架然后用它来导航它。我只读过这样的方法,我也没试过。我个人不喜欢上visualtree
。MainPage
或ProjectsPage
上创建导航框架的静态/单例实例,然后只需从usercontrol
调用它,然后将其用于导航。这种方法的问题,因为你在这里直接从用户控件导航,你将无法在ProjectsPage上执行任何操作(如重置默认值,如果启用了NavigationCache
则等等)导航,但作为一种解决方法,你可以把它放在你的OnNavigatingFrom覆盖中。public event Action<MyClass> RequestViewChange;
)。在ProjectsPage
中,您可以订阅userControl
的此事件,当用户控件上的按钮被按下时,简单启动事件并让ProjectsPage
听取它并采取相应行动。
我使用Action<T>
作为委托,因为我可以在不定义内容的情况下发送尽可能多的事件参数。
我知道这是一种非常规的方法,但它的作用就像一个魅力。与上升视觉树相比,非常麻烦。请随意使用评论部分。