C# Can';t将ObservableCollection绑定到Xamarin表单上的ListView
因此,我在将项绑定到listview时遇到了一个问题 初始化页面C# Can';t将ObservableCollection绑定到Xamarin表单上的ListView,c#,listview,xamarin,xamarin.forms,C#,Listview,Xamarin,Xamarin.forms,因此,我在将项绑定到listview时遇到了一个问题 初始化页面 public HomePage() { Acquaintances = Add(); //InitializeToolbar(); InitializeComponent(); } private ObservableCollection<Acquaintance> Add() { return new ObservableCol
public HomePage()
{
Acquaintances = Add();
//InitializeToolbar();
InitializeComponent();
}
private ObservableCollection<Acquaintance> Add()
{
return new ObservableCollection<Acquaintance>()
{
new Acquaintance(){.....}
公共主页()
{
熟人=添加();
//初始化为olbar();
初始化组件();
}
私有ObservableCollection Add()
{
返回新的ObservableCollection()
{
新认识(){…}
关于XAML
<ListView x:Name="lstUser" BackgroundColor="White" ItemsSource="{Binding Acquaintances}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<ImageCell ImageSource="{Binding PhotoUrl}" Height="50"></ImageCell>
</Grid>
<StackLayout Grid.Column="1" Padding="5">
<Label Text="{Binding FirstName}" FontSize="15" TextColor="Black"></Label>
<Label Text="{Binding City}" FontSize="10" TextColor="Black"></Label>
<Label Text="{Binding JobTitle}" FontSize="10" TextColor="#CCCCCC"></Label>
</StackLayout>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ListView无法将熟人绑定到ListView的项目源。哪里出错
第页:
public ObservableCollection<Acquaintance> Acquaintances { get; }
publiccobserveCollection熟人{get;}
您似乎忘记了在页面上设置BindingContext
属性。如果不设置该属性,页面将不知道从何处获取数据
要将上下文设置为自身,请执行以下操作:
public HomePage()
{
Acquaintances = Add();
//InitializeToolbar();
InitializeComponent();
BindingContext = this; // Note that I added this line
}
在注释中,您会问为什么设置
BindingContext=熟人;
时失败,以及为什么设置BindingContext=this;
时有效
很简单,将BindingContext
设置为要访问的对象属性。通过将上下文设置为this
(在本例中为HomePage
),您可以使用绑定,例如{bindingknowlements}
,因为knowlements
是HomePage
的属性
如果将
BindingContext
设置为特定属性,该属性也可以是复杂类型,但不一定必须是复杂类型,则会更改范围。因此,当将BindingContext
设置为熟人
时,必须将列表中的ItemsSource
更改为{Binding.}
。点表示它将使用BindingContext
本身中的对象,而不是其中的属性。是否设置了BindingContext?是的,我尝试过。BindingContext=熟人;如果设置BindingContext=熟人,则绑定表达式应为ItemsSource=“{binding.}”BindingContext=熟人;=>失败BindingContext=这;=>成功原因?更新了答案,我希望它能为您澄清一点。如果有帮助,请不要忘记接受它。