C# Can';t将ObservableCollection绑定到Xamarin表单上的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

因此,我在将项绑定到listview时遇到了一个问题

初始化页面

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=这;=>成功原因?更新了答案,我希望它能为您澄清一点。如果有帮助,请不要忘记接受它。