2017-09-12 82 views
0

我似乎無法爲此問題得到直接的答案。 我試圖在後面的代碼中設置項目源。這在Xaml中很容易實現,但在代碼背後似乎並不那麼直接。在Xamarin表單後面的代碼中設置ListView ItemSource綁定

在後面的代碼我使用:

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

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

這只是拋出的「傾斜轉換空隙System.Collections.IEnumerable」我也認爲這是不正確的錯誤。

我試圖將它綁定到視圖模型中的可觀察集合。

視圖模型:

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

     } 
    } 

當設置在XAML這個綁定工作,精美的結合。 這個問題是不可觀察的集合問題是,我不知道如何在代碼背後設置綁定。

摘要:

我需要知道如何做到這一點(的ItemSource綁定):

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


</ListView> 

在後面的代碼。

任何幫助,將不勝感激。

回答

2

要以編程方式在控件上設置綁定,您必須將其作爲擴展方法中的參數傳遞。參考鏈接:extension methods,或member method

例如,嘗試:

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

這設定路徑之間的結合爲「routeLabels」和控制的BindingContext這是視圖模型。

此外,根據C#屬性的標準命名策略,建議將'routeLabels'更改爲'RouteLabels'。

+0

我會試試這個。一會兒。 – user3355961

+0

這工作。謝謝 – user3355961

相關問題