因此,假设我在左边缘有宽度为 200 像素的堆栈面板。现在我想在这个面板上处理从左到右的水平滑动并显示附加面板。然后处理从右向左滑动以隐藏它。
我尝试处理页面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;
(再次省略默认空页)