想要在用户触摸显示屏的左侧部分时触发事件

时间:2012-04-15 11:03:17

标签: c# windows-phone-7 silverlight-4.0 windows-phone-7.1

我在我的应用中使用了scrollviewer来显示图像。当用户触摸显示器的右侧时,我需要在scrollviewer右侧移动stackpanel,当用户触摸左侧时,我需要向左移动。我尝试XNA框架,但vector2类不检查手指的位置。如何实现这一点。

1 个答案:

答案 0 :(得分:0)

您应该能够挂钩页面的MouseLeftButtonDown事件。然后使用MouseEventArgs.GetPosition Method计算用户触摸屏幕的位置。以下是演示此概念的基本示例:

<强> XAML

<ScrollViewer Background="Red">
    <StackPanel x:Name="MyStackPanel" 
                Orientation="Vertical" 
                Width="150" 
                Background="Black"  
                HorizontalAlignment="Left">
        <ItemsControl ItemsSource="{Binding Images}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding}" Width="48" Height="48" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>                
</ScrollViewer>

代码背后

public MainPage()
{
    InitializeComponent();

    this.MouseLeftButtonDown += OnMouseDown;
}

private void OnMouseDown( object sender, MouseButtonEventArgs e )
{
    Point pos = e.GetPosition( this );

    double half = this.ActualWidth / 2;

    if( pos.X < half )
    {
        MyStackPanel.HorizontalAlignment = HorizontalAlignment.Right;
    }
    else
    {
        MyStackPanel.HorizontalAlignment = HorizontalAlignment.Left;
    }
}