2017-05-10 9 views
0

J'utilise C# et je crée une application UWP. J'utilise Windons.Ui.Xaml.Controls.Image et j'ai créé le code follwoing qui énumère mes imagesSélection de l'image de StackPanel C# UWP (Ajout de l'écouteur d'action à UIElement et Image to UIElement)

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

Ceci est en boucle, et je veux lorsque l'utilisateur clique sur certains image pour pouvoir sauver il. J'ai un code pour enregistrer, je ne sais pas comment ajouter un écouteur souris à chaque image, de sorte qu'il est marqué lorsque je déplace la souris dessus (Donc l'utilisateur sait qu'en cliquant dessus quelque chose va arriver) et quand il clique je veux qu'il appelle ma fonction avec cet index d'images ....

J'ai regardé UIElement mais je n'arrive toujours pas à le comprendre.

Merci!

Répondre

0

Nous pouvons ajouter l'événement PointerEntered au contrôle Image que lorsque l'utilisateur passe la souris dessus, nous pouvons changer l'interface utilisateur. Ensuite, nous pouvons ajouter l'événement Tapped au contrôle Image, si l'utilisateur clique dessus, il sera viré.

Pour obtenir l'index du Image, nous pouvons définir l'index sur la propriété Name du Image.

Par exemple:

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 
}