避免在每个页面上重复菜单

本文关键字:菜单 | 更新日期: 2023-09-27 18:03:21

我的问题如下:我的应用程序需要在左侧显示一个"汉堡包"菜单,而它的内容右侧根据上下文而变化。我最初的想法是在不同的Page中使用帧来实现它。我了解到Frame本身是对rootFrame的引用,因此实际上不需要嵌套的Frame s来进行导航。

然而,要在所有Page上获得汉堡包菜单,我需要以某种方式包括它们。是否有可能避免在每个页面中重复XAML代码?

我找到了UserControl。医生对我来说有点难懂。假设我在XAML中实现了一个UserControl,并通过x:Name="HamburgerButton". Then, in my MainPage在其中命名了一个Button,我把这样的东西:

<Grid x:Name="MyGrid">
    <controls:MyControl />
</Grid>
UserControl XAML中的Button在后面的代码中有一个Click事件。我如何在使用它的MainPage中扩展/自定义它的实现?我想我不明白他们之间的关系。而且ContentPresenter现在就在我头上

避免在每个页面上重复菜单

你不需要ContentPresenter。这是在您创建自己的模板时使用的。你的主视图应该包含你的菜单按钮和一个内容控件。当用户单击其中一个按钮时,您可以交换ContentControl的Content属性:对于每个菜单项,您可以创建一个额外的UserControl,其中一个总是设置为ContentControl。例如,当用户点击"Menu X"时,你可以将ContentControl的Content属性设置为UserControlX,它包含了所有与上下文相关的东西。当用户点击"Button Y"时…你懂的。

您可以在主视图的代码隐藏文件中完成所有这些操作。从长远来看,你可能会想要研究MVVM模式,并将ContentPresenter绑定到MainView视图模型的属性上——并且可能将按钮绑定到iccommands上。但是它也可以通过代码隐藏方法工作。