我的问题如下:我的应用程序需要显示"汉堡"左侧的菜单,而其内容权限根据上下文而变化。我最初的想法是在不同Page
s内使用Frames实现它。我了解到Frame
本身是对rootFrame
的引用,因此实际上不需要嵌套Frame
来进行导航。
然而,为了获得所有Page
的汉堡菜单,我需要以某种方式包含它们。是否有可能避免在每个页面中复制XAML代码?
调查我发现UserControl
。对我来说,文档有点难以理解。假设我在XAML中实现了UserControl
,并通过Button
MainPage命名为x:Name="HamburgerButton". Then, in my
。我这样做了:
<Grid x:Name="MyGrid">
<controls:MyControl />
</Grid>
Button
XAML中的UserControl
在后面的代码中有Click
个事件。如何在使用它的MainPage
中扩展/自定义它的实现?我想我不理解他们之间的关系。此时ContentPresenter
也在我的头上。
答案 0 :(得分:0)
您不需要ContentPresenter。这是您创建自己的模板时的原因。您的MainView应包含您的菜单按钮和ContentControl。当用户单击其中一个按钮时,您将交换ContentControl的Content属性:对于每个菜单项,您可以创建一个额外的UserControl,其中一个始终设置为ContentControl。例如,当用户点击&#34;菜单X&#34;然后将ContentControl的Content属性设置为UserControlX,其中包含所有与上下文相关的内容。当用户点击&#34;按钮Y&#34; ......你明白了。
您可以从主视图的代码隐藏文件中完成所有这些操作。从长远来看,您可能希望查看MVVM模式并将ContentPresenter绑定到MainView的视图模型的属性 - 并将您的按钮绑定到ICommands。但它也可以通过代码隐藏方法工作。