1

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

4

1 回答 1

0

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

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;
    }
}
于 2012-04-27T21:22:48.470 回答