2017-01-23 3 views
0

J'ai un contrôle personnalisé, fondamentalement un stacklayout que je peux lier une chaîne concaténée, et que j'ai décomposé en plusieurs objets, comme une liste de balises.xamarin forms contrôle personnalisé

public void Render() 
     { 
      if (ItemsSource == null) 
       return; 

      this.Orientation = Orientation == StackOrientation.Vertical ? StackOrientation.Vertical : StackOrientation.Horizontal; 
      this.Margin = new Thickness (0, 0, 0, 0); 

      List<string> items = ItemsSource.Split('|').ToList(); 
      foreach (var item in items) 
      { 
       var frame = new Frame(); 
       frame.BindingContext = item; 
       frame.BackgroundColor = Color.FromHex("#FCFACF"); 
       frame.OutlineColor = Color.FromHex("#D0C0AD"); 
       frame.HasShadow = false; 
       frame.Padding = new Thickness(4, 2, 4, 0); 
       var label = new Label(); 
       label.Text = "{Binding}"; 
       label.FontSize = 10; 
       label.Parent = frame; 
       Children.Add(frame); 
      } 
     } 

mais je ne peux pas sembler obtenir ce droit, comment puis-je ajouter un lable être un enfant d'un cadre, et comment puis-je corriger ma fixation, comme à l'heure actuelle si j'ajoute l'étiquette à la enfants de stacklayout le texte des étiquettes est {binding} et non le texte réel.

Quelqu'un peut-il s'il vous plaît aidez-moi avec ceci. Tout ceci fonctionnait si j'ajoutais un ItemTemplate avec un datatemplate et viewcell dans le XAML, mais je ne veux pas que cela soit fait en XAML car j'aimerais réutiliser tout cela dans d'autres vues.

Répondre

0

Cadre a la propriété Content

Frame.Content = label; 

Pour attribuer une fixation dans le code, utilisez

label.SetBinding(Label.TextProperty, new Binding(".")); 
+0

merci parfait! –