Chr*_*ian 5 c# xaml microsoft-metro windows-phone-8
我希望我的应用程序在每个应用程序中都有一个Pivot控件.问题是刷到下一个不起作用,因为它反而导致水平滚动网页.但是,网页是响应式的,不需要水平滚动,所以我想要水平滑动导致枢轴切换.这可以实现吗?如果我不能使用控件在页面上使用s 实现页面切换的推荐方法是什么?iOS/Android的顶级菜单?WebBrowserPivotItemPivotItemPivotWebControl
是的,这是可能的,但是需要很少的解决方法,因为 Webbrowser 首先处理该事件,而您的 Pivot 可能不知道它。您可以为此目的使用Touch其事件FrameReported。简单的代码可以如下所示:
public MainPage()
{
InitializeComponent();
Touch.FrameReported += Touch_FrameReported;
}
TouchPoint first;
private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
TouchPoint mainTouch = e.GetPrimaryTouchPoint(myWebBrowser);
if (mainTouch.Action == TouchAction.Down)
first = mainTouch;
else if (mainTouch.Action == TouchAction.Up)
{
if (mainTouch.Position.X - first.Position.X < 0)
MessageBox.Show("Next item.");
//myPivot.SelectedIndex++;
if (mainTouch.Position.X - first.Position.X > 0)
MessageBox.Show("Previous item.");
//myPivot.SelectedIndex--;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的 - 我记住了用户开始移动的位置,然后当他释放触摸时 - 我更改了 myPivot.SelectetIndex。希望这有所帮助。您也可以尝试使用TouchPanel,但我认为这会更简单(如果足够的话)。
如果您想禁用某些手势,例如可以像下面的代码一样。我只启用了 HorizontalDrag - 所以它不会触发缩放。容差当然不应该是0,你必须定义最适合你的应用程序。
// in MainPage() constructor
TouchPanel.EnabledGestures = GestureType.HorizontalDrag;
private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
TouchPoint mainTouch = e.GetPrimaryTouchPoint(myMap);
if (mainTouch.Action == TouchAction.Down)
first = mainTouch;
else if (mainTouch.Action == TouchAction.Up && TouchPanel.IsGestureAvailable)
{
if (mainTouch.Position.X - first.Position.X < 0)
MessageBox.Show("Next item.");
//myPivot.SelectedIndex++;
if (mainTouch.Position.X - first.Position.X > 0)
MessageBox.Show("Previous item.");
//myPivot.SelectedIndex--;
}
}
Run Code Online (Sandbox Code Playgroud)