左端に幅 200px のスタックパネルがあるとします。今、このパネルで左から右への水平スワイプを処理し、追加のパネルを表示したいと考えています。次に、右から左にスワイプして非表示にします。
ページManipulationStarted
とManipulationDelta
イベントを処理しようとしましたが、少なくともマウスでは効果がないようです。それを実装する簡単な方法は何ですか?
私が試したこと:ページのスワイプイベントを処理し、スタックパネルの境界で開始された場合はスワイプチェックの開始時に、それ以外の場合は無視します。
スワイプのデルタが正の 40 より大きい場合、スワイプは左から右に行われたように見えます。
私のXAMLファイル:
// standard stuff of page
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Orientation="Vertical" Width="200" HorizontalAlignment="Left" Background="White" x:Name="Panel"/>
</Grid>
// 標準的なものを続ける
C# ファイル:
public MainPage()
{
this.InitializeComponent();
this.ManipulationDelta += MainPage_ManipulationDelta;
this.ManipulationStarted += MainPage_ManipulationStarted;
}
private void MainPage_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
System.Diagnostics.Debug.WriteLine("heh");
if (e.Position.X < 200)
{
initialPoint = e.Position;
isSwiping = true;
}
}
private void MainPage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
if (e.IsInertial && isSwiping)
{
Point currentPoint = e.Position;
if (currentPoint.X - initialPoint.X >= 40)
{
isSwiping = false;
e.Complete();
System.Diagnostics.Debug.WriteLine("finished swipe :)");
}
}
}
private Point initialPoint;
private Boolean isSwiping;
(ここでもデフォルトの空のページを省略)