2017-05-10 9 views
0

Ich benutze C# und ich erstelle UWP App. Ich verwende Windons.Ui.Xaml.Controls.Image und ich habe follwoing Code erstellt, die Bild aus StackPanel auswählen C# UWP (Hinzufügen von Aktion Listener zu UIElement und Bild zu UIElement)

UxHelpers.DispatchToASTAThread(
async() => 
{ 
    imageIndex++; 
    StackPanel stackPanel = new StackPanel(); 
    stackPanel.Children.Add(image);   
} 
this.Results.Children.Add(stackPanel); 
}).Forget(); 

Dies ist in für Schleife meiner Bilder

auflistet, und ich möchte, wenn der Benutzer klickt auf bestimmtes Bild der Lage sein, zu speichern es.

Ich habe Code zum Speichern, ich weiß nur nicht, wie Maus-Listener zu jedem Bild hinzufügen, so dass es markiert ist, wenn ich die Maus darüber bewege (So weiß Benutzer, dass durch das Klicken etwas passieren wird) und Wenn er klickt, möchte ich meine Funktion mit diesem Bilderindex aufrufen ....

Ich habe UIElement angeschaut, aber ich kann es immer noch nicht herausfinden.

Danke !!

Antwort

0

Wir können das Ereignis PointerEntered dem Image Steuerelement hinzufügen, dass, wenn der Benutzer die Maus darüber bewegt, dann können wir die Benutzeroberfläche ändern. Dann können wir das Ereignis Tapped zum Steuerelement Image hinzufügen, wenn der Benutzer darauf klickt, wird es ausgelöst.

Um den Index der Image zu erhalten, können wir den Index auf die Name Eigenschaft der Image setzen.

Zum Beispiel:

protected override async void OnNavigatedTo(NavigationEventArgs e) 
{ 
    StackPanel stackPanel = new StackPanel(); 
    for (int i = 0; i < 3; i++) 
    { 
     Windows.Storage.Streams.IRandomAccessStream random = await Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/sun2set.jpg")).OpenReadAsync(); 
     Image image = new Image(); 
     BitmapImage bitmapImage = new BitmapImage(); 
     StackPanel mystackPanel = new StackPanel(); 
     image.Name = i.ToString(); 
     bitmapImage.SetSource(random); 
     image.Source = bitmapImage; 
     mystackPanel.Children.Add(image); 
     image.PointerEntered += Image_PointerEntered; 
     image.PointerExited += Image_PointerExited; 
     stackPanel.Children.Add(mystackPanel); 
    } 
    this.Results.Children.Add(stackPanel); 
} 

private void Image_PointerExited(object sender, PointerRoutedEventArgs e) 
{ 
    var image = sender as Image; 

    var parent = VisualTreeHelper.GetParent(image) as StackPanel; 
    parent.BorderBrush = new SolidColorBrush(Colors.Red); 
    parent.BorderThickness = new Thickness(0); 
    image.Tapped -= Image_Tapped; 
} 

private void Image_PointerEntered(object sender, PointerRoutedEventArgs e) 
{ 
    var image = sender as Image; 
    Debug.WriteLine("The" + image.Name + "is Selected!"); 
    var parent = VisualTreeHelper.GetParent(image) as StackPanel; 
    parent.BorderBrush = new SolidColorBrush(Colors.Red); 
    parent.BorderThickness = new Thickness(5); 
    image.Tapped += Image_Tapped; 
} 

private void Image_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    var image = sender as Image; 
    //download the image 
}