2017-01-23 6 views
0

Ich habe ein benutzerdefiniertes Steuerelement, im Grunde eine Stacklayout, die ich eine verkettete Zeichenfolge binden kann, und diese Aufteilung in mehrere Objekte, wie eine Tag-Liste.Xamarin Formen benutzerdefinierte Steuerelement

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); 
      } 
     } 

aber ich kann nicht, dieses Recht zu bekommen scheinen, wie füge ich ein Label ein Kind eines Rahmens zu sein, und wie kann ich das beheben meine Bindung, wie gegenwärtig, wenn ich das Etikett vorzuzeigen hinzufügen Kinder des Stacklayouts Der Text der Labels ist {binding} und nicht der eigentliche Text.

Kann mir bitte jemand dabei helfen. Ich hatte alles funktionierte, wenn ich ein ItemTemplate mit einem Datamitplate und einer viewcell in dem XAML hinzufügte, aber ich will das in XAML nicht tun, da ich das alles in anderen Ansichten wiederverwenden möchte.

Antwort

0

Rahmen hat Content-Eigenschaft

Frame.Content = label; 

ein in Code zu binden, verwenden

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

Perfekt Dank zuweisen! –

Verwandte Themen