【问题标题】:Disabling input in a Pivot during a transition?在转换期间禁用 Pivot 中的输入?
【发布时间】:2011-11-15 11:48:18
【问题描述】:

我在 Windows Phone 7 上遇到了枢轴控件的问题。在我正在开发的应用程序中,除了能够使用标准的左右滑动来更改枢轴页面之外,枢轴控件还会自动前进通过设置 SelectedIndex 来按下按钮。

在转换过程中,如果点击屏幕,则会注册一个按钮按下。在动画完成之前,此按钮按下用于错误的按钮。 (即,如果 SelectedItem 增加了在屏幕右侧的点击将导致左侧的按钮被选中)

正在实施的应用程序是一个测验应用程序。在这个阶段重写来替换枢轴控件实际上并不可行,因为除了这个问题之外,该应用程序已接近完成,并且枢轴提供了所需的所有其余功能。

那么,有没有什么办法可以在动画进行时停止传递输入?

我尝试在 Pivot 上设置 IsEnabled,但这会导致动画失去所有流动性 - 只是闪烁到下一个项目而不是滚动。大概是因为这两个任务都将在 UI 线程上运行。

还有其他解决方案的建议吗?

【问题讨论】:

    标签: c# silverlight windows-phone-7 pivot


    【解决方案1】:

    在更改 PivotItem 期间更改枢轴的 IsHitTestVisible 属性以防止此类点击。

    当枢轴为UnloadingPivotItem 时将其设置为false,然后在LoadedPivotitem 事件上启用它。

    【讨论】:

      【解决方案2】:

      经过短暂的测试后,Pivot.LoadedPivotItem 事件似乎在动画完成后触发。这意味着您可以在动画进行时使用布尔字段来抑制按钮事件处理程序。

      当你设置选中的索引时:

      _suppressEvents = true;
      uxPivot.SelectedIndex = index;
      

      然后在LoadedPivotItem事件中:

      _suppressEvents = false;
      

      在按钮事件中:

      private void button_Click(object sender, RoutedEventArgs e)
      {
          if (!_suppressEvents)
          {
              ...
          }
      }
      

      【讨论】:

        【解决方案3】:

        对原始答案稍加补充......您也可以通过设置 isLocked = true 来锁定每个枢轴

        对于按钮

        //unlock
        SettingsPivot.IsLocked = false;
        //navigate
        SettingsPivot.SelectedItem = OtherSettings;
        //lock new pivot
        SettingsPivot.IsLocked = true;
        

        【讨论】:

          猜你喜欢
          • 2015-02-25
          • 2018-05-06
          • 2012-02-25
          • 1970-01-01
          • 2012-08-08
          • 1970-01-01
          • 1970-01-01
          • 2018-04-22
          • 2015-10-14
          相关资源
          最近更新 更多