基本上,我希望能够创建一个菜单,点击某个按钮将从左侧(或右侧)出现,并且点击主屏幕上的任何位置,用户将能够取消菜单。例如,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.1和 https://stackoverflow.com/questions/22613421/windows-8-1-apps-left-menu
我知道,这不是Windows平台实现菜单的最佳方式(我们有顶级应用栏,右),但我们的客户只是想要这个。
我想要使用XAML(C#或VB.NET)为Windows 8.1的本机实现提出一些提示或理想的代码。感谢所有愿意考虑的人。
答案 0 :(得分:1)
您将StackPanel
与Orientation="Horizontal"
放在ScrollViewer
中。在StackPanel
中放置三个面板 - 让它们Grids
并调用它们:左,中,右。在SizeChanged
的{{1}}个事件中,将中间网格的ScrollViewer
和Width
设置为与Height
和ActualWidth
相同的值ActualHeight
并且可能将左右网格设置得稍窄一些,以便在滚动到末端时留出空间以查看中间面板的一点点。通过设置ScrollViewer
并滚动条形可见性使ScrollViewer
水平滚动,并通过设置HorizontalSnapPointsType
和HorizontalSnapPointsAlignment
属性将Horizontal/VerticalScrollMode
对齐到网格面板。如果您的面板中有任何垂直ScrollViewer
并将IsHorizontalRailEnabled
设置为ScrollViewer
,则根据操作方向仅滚动其中一个,同时将水平ScrollViewers
上的IsVerticalRailEnabled="true"
设置为true。最后 - 将透明覆盖面板作为中间面板的顶部子面板处理覆盖层上的点击事件,以便在中间面板不居中时将其返回到视图中,并在菜单按钮的处理程序中滚动水平{{1到开始/结束。