2012-04-15 5 views
1

Ich habe den Scrollviewer in meiner App verwendet, um Bilder anzuzeigen. Ich muss das Stackpanel innerhalb der Scrollviewer rechten Seite bewegen, wenn der Benutzer die rechte Seite des Displays berührt, und nach links bewegen, wenn der Benutzer die linke Seite berührt. Ich versuche im XNA-Framework, aber Vektor2-Klasse überprüft nicht die Position des Fingers. Wie man das erreicht.möchte ein Ereignis auslösen, wenn der Benutzer den linken Teil der Anzeige berührt

Antwort

0

Sie sollten in der Lage sein, in das Ereignis MouseLeftButtonDown der Seite einhaken. Und dann berechnen, wo der Benutzer den Bildschirm mit der MouseEventArgs.GetPosition Method berührt. Hier ist ein einfaches Beispiel, dieses Konzept zu demonstrieren:

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> 

Code hinter

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; 
    } 
} 
Verwandte Themen