Windows Phone 7 アプリを開発しています。複数のページにスライダー コントロールがあります。ただし、アプリ内の特定のページに移動すると、すべてのページのすべてのスライダー コントロールが奇妙に動作します。
症状は、ユーザーがスライダーのつまみを非常に短い範囲しかドラッグできないことです。
私が言及した特定のページは、コードと XAML に問題はありません。すべてのスライダーが正しく動作しないのはなぜですか?
Windows Phone 7 アプリを開発しています。複数のページにスライダー コントロールがあります。ただし、アプリ内の特定のページに移動すると、すべてのページのすべてのスライダー コントロールが奇妙に動作します。
症状は、ユーザーがスライダーのつまみを非常に短い範囲しかドラッグできないことです。
私が言及した特定のページは、コードと XAML に問題はありません。すべてのスライダーが正しく動作しないのはなぜですか?
問題は、ツールキット ジェスチャを使用すると、Slider の動作がおかしくなることです。そのため、Slider の操作を開始するときは Gesture リスナーを無効にし、Slider の操作を停止するときに有効にする必要があります。
<Slider Height="84" Name="fixedSlider" ManipulationStarted="disableGestures" ManipulationCompleted="restoreGestures" />
GestureType prevGestureType;
private void disableGestures(object sender, ManipulationStartedEventArgs e)
{
prevGestureType = TouchPanel.EnabledGestures;
TouchPanel.EnabledGestures = GestureType.None;
fixedSlider.IsHitTestVisible = false;
}
private void restoreGestures(object sender, ManipulationCompletedEventArgs e)
{
TouchPanel.EnabledGestures = prevGestureType;
}
SliderクラスにはプロパティSmallChangeがあり、スライダーテンプレートを見ると、ユーザーがスライダーをタップすると、値は小さな変更でのみ変更されることがわかります。これを回避したい場合は、カスタムスライダーの動作を作成する必要があります。