gpt4 book ai didi

c# - 在 Xamarin Forms 背后的代码中设置 ListView ItemSource 绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 21:00:16 24 4
gpt4 key购买 nike

对于这个问题,我似乎无法得到直接的答案。我试图在后面的代码中设置项目源。这在 Xaml 中很容易做到,但在后面的代码中似乎并不那么直接。

在我使用的后面的代码中:

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

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

这只会引发“无法将 void 转换为 System.Collections.IEnumerable”的错误,我也认为这是不正确的。

我试图将它绑定(bind)到 View 模型中的可观察集合。

View 模型:

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

}
}

在 Xaml 中设置绑定(bind)时,此绑定(bind)工作正常。问题不是可观察集合问题是我不知道如何在后面的代码中设置绑定(bind)。

总结:

我需要知道如何做到这一点(itemsource 绑定(bind)):

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


</ListView>

在后面的代码中。

如有任何帮助,我们将不胜感激。

最佳答案

要以编程方式在控件上设置绑定(bind),您必须将其作为扩展方法中的参数传递。引用链接:extension methods , 或 member method

例如,尝试:

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

这在作为“routeLabels”的路径和控件的 BindingContext(即 View 模型)之间设置了绑定(bind)。

此外,建议根据 C# 属性的标准命名策略将“routeLabels”更改为“RouteLabels”。

关于c# - 在 Xamarin Forms 背后的代码中设置 ListView ItemSource 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com