【问题标题】:Sidemenu Windows Phone 8.1边菜单 Windows Phone 8.1
【发布时间】:2015-01-07 13:22:51
【问题描述】:

我已经在 windowsphone 8 的 android 音乐播放器中实现了一个有效的弹出菜单。 为此,我使用 Library Interactivity 来获得拖放功能。

现在看来我不能再使用 windowsphone 8.1 中的功能了。微软的自动转换工具我不能用。我们的项目是为多个平台制作的,并且具有可移植的类库。我们不得不淘汰 Silverlight-Part,这就是它不能转换的原因。

我在网上搜索了类似使用手势识别器的替代方法,但没有运气。

也许你们有些人有想法?

非常感谢任何回复。

这里是旧库的部分:

<i:Interaction.Behaviors>
                <el:MouseDragElementBehavior  ConstrainToParentBounds="True" 
                                              Dragging="MouseDragRight_Dragging" 
                                              DragFinished="MouseDragRight_DragFinished" 
                                              DragBegun="MouseDrag_DragBegan"/>
</i:Interaction.Behaviors>

【问题讨论】:

    标签: windows drag-and-drop windows-phone-8.1 draggable


    【解决方案1】:

    查看GestureRecognizerMSDN: GestureRecognizer

    GestureRecognizer 类有这些事件。

    横向滑动

    当用户在仅支持沿单个轴平移的内容区域内执行滑动或滑动手势(通过单次触摸接触)时发生。手势必须发生在垂直于该平移轴的方向上。

    拖动

    当用户使用鼠标或笔/触控笔(单次接触)执行滑动或滑动手势时发生。 当用户执行按住手势(通过单次触摸、鼠标或笔/触笔接触)时发生。

    操作完成

    当输入点被抬起并且通过惯性的所有后续运动(平移、扩展或旋转)都结束时发生。

    ManipulationInertiaStarting

    在操作过程中所有接触点都被抬起并且操作的速度足够显着以启动惯性行为(在输入指针被抬起后继续平移、扩展或旋转)时发生。

    操作开始

    在一个或多个输入点已启动且后续运动(平移、扩展或旋转)已开始时发生。

    操作更新

    在启动一个或多个输入点并且正在进行后续运动(平移、扩展或旋转)之后发生。

    右击

    当指针输入被解释为右击手势时发生,与输入设备无关。 Tapped 当指针输入被解释为点击手势时发生。

    【讨论】:

      【解决方案2】:

      感谢 Chubosaurus Software,我想通了:

      1:使用您需要的设置创建GestureRecognizer 的实例

      GestureRecognizer _gestureRecognizer = new GestureRecognizer();
      _gestureRecognizer.GestureSettings =  GestureSettings.CrossSlide ;
      

      2:连接您需要的事件

      _gestureRecognizer.CrossSliding += _gestureRecognizer_CrossSliding;
      

      3:根据您需要的手势,您必须将事件路由到识别器。在这种情况下是

      private void MainViewGrid_PointerMoved(object sender, PointerRoutedEventArgs e)
      {
         _gestureRecognizer.ProcessMoveEvents(e.GetIntermediatePoints(MainViewGrid));
      }
      
      private void MainViewGrid_PointerPressed(object sender, PointerRoutedEventArgs e)
      {
         _gestureRecognizer.ProcessDownEvent(e.GetCurrentPoint(MainViewGrid));
      }
      
      private void MainViewGrid_PointerReleased(object sender, PointerRoutedEventArgs e)
      {
         _gestureRecognizer.ProcessUpEvent(e.GetCurrentPoint(MainViewGrid));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2016-12-01
        相关资源
        最近更新 更多