2017-09-12 3 views
0

Ich kann nicht scheinen, eine klare Antwort für dieses Problem zu bekommen. Ich versuche, die Elementquelle im Code hinter zu setzen. Das ist im Xaml einfach, scheint aber im Code dahinter nicht so geradlinig zu sein.Set ListView ItemSource Binding in Code hinter Xamarin Forms

In der Code-behind Ich verwende:

Binding listbind = new Binding("routeLabels") {Source=this}; 

listviewofroutes.ItemsSource = SetBinding(ListView.ItemsSourceProperty, listbind); 

Dies wirft nur einen Fehler von „kann nicht konvertieren Leere System.Collections.IEnumerable“ Ich denke auch, das nicht richtig ist.

Ich versuche, es an eine beobachtbare Sammlung im Ansichtsmodell zu binden.

Die Ansicht Modell:

private ObservableCollection<RouteInfo> _routelabels; 
    public ObservableCollection<RouteInfo> routeLabels 
    { 
     get { return _routelabels; } 
     set 
     { 
      if (Equals(value, _routelabels)) return; 
      _routelabels = value; 
      OnPropertyChanged(nameof(routeLabels)); 

     } 
    } 

Wenn die Bindung in XAML diese Bindung funktioniert gut einstellen. Das Problem ist nicht beobachtbar Sammlung das Problem ist, dass ich keine Ahnung habe, wie Sie die Bindung in den Code hinter setzen.

Zusammenfassung:

Ich muss wissen, wie dies zu tun (ItemSource Bindung):

<ListView x:Name="listviewofroutes" ItemsSource="{Binding routeLabels}"> 


</ListView> 

In der Code-behind.

Jede Hilfe wäre willkommen.

Antwort

2

Um die Bindung programmgesteuert für ein Steuerelement festzulegen, müssen Sie es als Parameter in der Erweiterungsmethode übergeben. Referenz Links: extension methods oder member method

Zum Beispiel versuchen:

listviewofroutes.SetBinding(ListView.ItemsSourceProperty, "routeLabels") 
//Or, 
listviewofroutes.SetBinding(ListView.ItemsSourceProperty, new Binding("routeLabels")) 

Dies stellt eine Bindung zwischen Pfad als 'routeLabels' und Kontrolle BindingContext, die das View-Modell ist.

Außerdem würde empfehlen, 'routeLabels' zu 'RouteLabels' gemäß der Standardbenennungsrichtlinie für C# -Eigenschaften zu ändern.

+0

Ich werde dies versuchen. Einen Moment. – user3355961

+0

Das hat funktioniert. Vielen Dank – user3355961

Verwandte Themen