2017-09-12 54 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

相关问题