在转换期间禁用Pivot中的输入

本文关键字:Pivot 输入 转换 | 更新日期: 2023-09-27 18:14:34

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

在转换过程中,如果屏幕被轻击,则按下一个按钮。在动画完成之前,按下的按钮是错误的。(例如,如果SelectedItem正在增加,点击屏幕右侧将导致左侧的按钮被选中)

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

那么,是否有任何方法可以在动画正在进行时停止输入?

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

谁有其他解决方案的建议?

在转换期间禁用Pivot中的输入

在更改PivotItem期间更改pivot的IsHitTestVisible属性,以防止此类水龙头。

当枢轴为UnloadingPivotItem时设置为false,然后在LoadedPivotitem事件时启用

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

设置所选索引时:

_suppressEvents = true;
uxPivot.SelectedIndex = index;

然后在loaddpivotitem事件中:

_suppressEvents = false;

在Button事件中:

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

在原来的答案上加一点。你也可以通过设置isLocked = true

来锁定每个枢轴

和按钮

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