避免在每个页面上重复菜单
本文关键字:菜单 | 更新日期: 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上。但是它也可以通过代码隐藏方法工作。