如何在Windows商店应用程序中实现类似Facebook的菜单(左侧菜单)

时间:2014-09-26 16:52:25

标签: xaml windows-8 windows-runtime windows-store-apps winrt-xaml

基本上,我希望能够创建一个菜单,点击某个按钮将从左侧(或右侧)出现,并且点击主屏幕上的任何位置,用户将能够取消菜单。例如,facebook应用程序在所有平台上都有类似的东西(在Windows 8上也是如此)。

我找到了Windows手机的解决方案(http://sviluppomobile.blogspot.cz/2013/08/add-lateral-menus-to-windows-phone.html),这不是Windows 8的方法。也许我可以使用一些手工制作的动画进行aflyover,这将默认在viewport之外。但是,我想必须有更好或理想的已经证明的解决方案。

此外,我在SO上发现了两个问题,我想问同样的问题,但那里没有答案...... How to do: lateral menu like in "Music" app on Windows 8 / 8.1https://stackoverflow.com/questions/22613421/windows-8-1-apps-left-menu

我知道,这不是Windows平台实现菜单的最佳方式(我们有顶级应用栏,右),但我们的客户只是想要这个。

我想要使用XAML(C#或VB.NET)为Windows 8.1的本机实现提出一些提示或理想的代码。感谢所有愿意考虑的人。

1 个答案:

答案 0 :(得分:1)

您将StackPanelOrientation="Horizontal"放在ScrollViewer中。在StackPanel中放置三个面板 - 让它们Grids并调用它们:左,中,右。在SizeChanged的{​​{1}}个事件中,将中间网格的ScrollViewerWidth设置为与HeightActualWidth相同的值ActualHeight并且可能将左右网格设置得稍窄一些,以便在滚动到末端时留出空间以查看中间面板的一点点。通过设置ScrollViewer并滚动条形可见性使ScrollViewer水平滚动,并通过设置HorizontalSnapPointsTypeHorizontalSnapPointsAlignment属性将Horizontal/VerticalScrollMode对齐到网格面板。如果您的面板中有任何垂直ScrollViewer并将IsHorizontalRailEnabled设置为ScrollViewer,则根据操作方向仅滚动其中一个,同时将水平ScrollViewers上的IsVerticalRailEnabled="true"设置为true。最后 - 将透明覆盖面板作为中间面板的顶部子面板处理覆盖层上的点击事件,以便在中间面板不居中时将其返回到视图中,并在菜单按钮的处理程序中滚动水平{{1到开始/结束。