在转换期间禁用Pivot中的输入
本文关键字:Pivot 输入 转换 | 更新日期: 2023-09-27 18:14:34
我在Windows Phone 7上遇到了一个Pivot Control问题。在我正在开发的应用程序中,除了能够使用标准的向左和向右滑动来更改枢轴页面外,枢轴控件还可以通过设置SelectedIndex在按下按钮时自动前进。
在转换过程中,如果屏幕被轻击,则按下一个按钮。在动画完成之前,按下的按钮是错误的。(例如,如果SelectedItem正在增加,点击屏幕右侧将导致左侧的按钮被选中)
正在实现的应用程序是一个测验应用程序。在这个阶段,重写来替换pivot控件是不可行的,因为除了这个问题之外,应用程序已经接近完成,并且pivot提供了所需的所有其他功能。
那么,是否有任何方法可以在动画正在进行时停止输入?
我试过在枢轴上设置IsEnabled,但这会导致动画失去所有的流动性-只是闪烁到下一个项目而不是滚动。大概是因为这两个任务都将在UI线程上运行。
谁有其他解决方案的建议?在更改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;