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

时间:2016-08-21 11:02:15

标签: c# user-controls

我的问题如下:我的应用程序需要显示"汉堡"左侧的菜单,而其内容权限根据上下文而变化。我最初的想法是在不同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也在我的头上。

1 个答案:

答案 0 :(得分:0)

您不需要ContentPresenter。这是您创建自己的模板时的原因。您的MainView应包含您的菜单按钮和ContentControl。当用户单击其中一个按钮时,您将交换ContentControl的Content属性:对于每个菜单项,您可以创建一个额外的UserControl,其中一个始终设置为ContentControl。例如,当用户点击&#34;菜单X&#34;然后将ContentControl的Content属性设置为UserControlX,其中包含所有与上下文相关的内容。当用户点击&#34;按钮Y&#34; ......你明白了。

您可以从主视图的代码隐藏文件中完成所有这些操作。从长远来看,您可能希望查看MVVM模式并将ContentPresenter绑定到MainView的视图模型的属性 - 并将您的按钮绑定到ICommands。但它也可以通过代码隐藏方法工作。