2017-05-24 4 views
0

タップジェスチャーでスタックレイアウトから別のラベルを取得する最良の方法は何ですか?私のStacklayoutはグリッドの一部です。タップジェスチャー認識機能でスタックレイアウトからラベルを取得

いいアイデアだとは思えますが、たとえば自分のブランド名のText値を取得するのには役立ちません。

相続人は私のstacklayoutの内容:

Image PictureProduct = new Image { Aspect = Aspect.AspectFit }; 
PictureProduct.Source = FileImageSource.FromUri(...); 
Label BrandName = new Label {Text = "HelloWorld"}; 
Label Description = new Label { Text = "Hello darkness my old friends..."}; 
Label Price = new Label { Text = "14,99€"}; 

StackLayout TheStack = new StackLayout { HorizontalOptions = LayoutOptions.Fill, VerticalOptions = LayoutOptions.Fill, HeightRequest = 425 }; 

TheStack.Children.Add(PictureProduct); 
TheStack.Children.Add(BrandName); 
TheStack.Children.Add(Description); 
TheStack.Children.Add(Price); 

var MyTapGesture = new TapGestureRecognizer(); 

MyTapGesture.Tapped += (sender, e) => 
{ 

    Debug.Write(/*BrandName of product*/); 

}; 
TheStack.GestureRecognizers.Add(MyTapGesture); 

答えて

0

あなたはStackLayoutにTGRを添付しますが、すべてのラベルにはなりません。その後、 "送信者は、" すべてのラベルのための1 TGRを作成

PictureProduct.GestureRecognizers.Add(PictureProductTGR); 
+0

いいアイデアだとは思うが、たとえば自分のブランド名のテキスト値を取得するのに役立たない。 私のstacklayoutの内容を聞きます: Image PictureProduct = new Image {Aspect = Aspect.AspectFit}; PictureProduct.Source = FileImageSource.FromUri(...); Label BrandName =新しいラベル{Text = "HelloWorld"}; Label description = new Label {Text = "こんにちは、昔の友よ..."}; ラベル価格=新しいラベル{Text = "14,99€"}; – vance

+0

ラベルには「var text =((Label)sender).Text; –

0

あなたがそうでなければ

PictureProduct.GestureRecognizers.Add(MyTapGesture); 

MyTapGesture.Tapped += (sender, e) => 
{ 

    if(sender is PictureProduct){} 

}; 

ような何かを試すことができます... "送信者" であるあなたに言う必要がありますI今のところ働いている解決策を見つけました。

  StackLayout TheStack = new StackLayout { HorizontalOptions = LayoutOptions.Fill, VerticalOptions = LayoutOptions.Fill, HeightRequest = 425, ClassId = ListProduct[CurrentProd].Sku.ToString(), ClassId = "Something" }; 

      TheStack.Children.Add(PictureProduct); 
      TheStack.Children.Add(BrandName); 
      TheStack.Children.Add(Description); 
      TheStack.Children.Add(Price); 

      var MyTapGesture = new TapGestureRecognizer(); 
      MyTapGesture.Tapped += (sender, e) => 
      { 
       StackLayout TappedStackId = sender as StackLayout; 
       Debug.Write("TappedStackId = " + TappedStackId.ClassId); 
      }; 
      TheStack.GestureRecognizers.Add(MyTapGesture); 
関連する問題