2017-05-10 9 views
0

私はC#を使用しており、UWPアプリケーションを作成しています。 私はWindons.Ui.Xaml.Controls.Imageを使用していると私はStackPanelからのイメージの選択C#UWP(UIElementへのUIElementおよびImageへのアクションリスナーの追加)

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

これは、ループの中で、ユーザーが保存できるようにするには、特定の画像をクリックしたときに私が欲しい私の画像を一覧表示し、コードをfollwoing作成しましたそれ。

保存するためのコードがあります。マウスのリスナーを各画像に追加する方法がわからないため、マウスを移動するとマークされるようになります(ユーザーは何かをクリックするとそのことがわかります)。彼がクリックすると、私はこの写真のインデックスで私の機能を呼びたいと思っています....

私はUIElementを見てきましたが、まだ分かりません。

ありがとうございます!

答えて

0

PointerEnteredイベントをImageコントロールに追加すると、ユーザーがマウスを移動してUIを変更できるようになります。次に、イベントをImageコントロールに追加できます。ユーザーがクリックすると、そのイベントが発生します。

Imageのインデックスを取得するには、インデックスのNameプロパティにインデックスを設定します。例えば

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 
} 
関連する問題