所以假设我的左边缘有一个宽度为200px的堆叠面板。现在我想在此面板上从左到右处理水平滑动并显示其他面板。然后处理从右向左滑动以隐藏它。
我尝试处理页面的ManipulationStarted
和ManipulationDelta
事件,但它似乎对鼠标没有任何影响。任何想法,可能是一种简单的方法来实现它?
我尝试过的: 处理页面的滑动事件,并在滑动检查开始时,如果它是在stackpanel的边界内启动,否则我会忽略它。
如果滑动的增量超过正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;
(再次省略默认空白页)
答案 0 :(得分:5)
您需要在控件上设置ManipulationMode,例如ManipulationMode =“TranslateX”并让控件响应命中测试(即如果它没有背景 - 将背景设置为透明)以接收操纵事件。
然后再次 - 为什么不使用内置支持滑动的ListView?