C# 无法将网格绑定到viewmodel-网格中未显示任何数据

C# 无法将网格绑定到viewmodel-网格中未显示任何数据,c#,xaml,xamarin.forms,C#,Xaml,Xamarin.forms,请参见下面的XAML: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:App1" x:C

请参见下面的XAML:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:App1"
             x:Class="App1.MainPage">

    <ContentPage.BindingContext>
        <local:PersonViewModel />
    </ContentPage.BindingContext>

    <StackLayout>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="20" />
            </Grid.RowDefinitions>
            <Label Grid.Column="1" Text="First Name" />
            <Label Grid.Column="2" Text="Surname" />
            <Label Grid.Column="3" Text="Date Of Birth" />
        </Grid>
        <ListView x:Name="listView" ItemsSource="{Binding people}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Label Grid.Column="1" Text="{Binding FirstName}" />
                            <Label Grid.Column="2" Text="{Binding Surname}" />
                            <Label Grid.Column="3" Text="{Binding Age}" />
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage>

以及视图模型:

public class PersonViewModel
    {
        public ObservableCollection<Person> people = new ObservableCollection<Person>();

        public PersonViewModel()
        {
            people.Add(new Person { Age = 36, FirstName = "Andrew", Surname = "Smith" });
            people.Add(new Person { Age = 65, FirstName = "David", Surname = "White" });
            people.Add(new Person { Age = 39, FirstName = "Bert", Surname = "Edwards" });
        }
    }
公共类PersonViewModel
{
公共ObservableCollection人员=新ObservableCollection();
公共PersonViewModel()
{
people.Add(新人{Age=36,FirstName=“安德鲁”,姓氏=“史密斯”});
添加(新人{Age=65,FirstName=“David”,姓氏=“White”});
添加(新人{Age=39,FirstName=“Bert”,姓氏=“Edwards”});
}
}
仅显示列标题。为什么数据不显示


我花了整整一个下午的时间试着让它发挥作用。我已经阅读了很多不同的答案,但是我仍然无法获得任何要显示的数据。

您缺少网格列定义(如果它与标题相同,那么您的xaml应该如下所示:

 <StackLayout>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="* />
                <ColumnDefinition Width="* />
                <ColumnDefinition Width="* />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="20" />
            </Grid.RowDefinitions>
            <Label Grid.Column="1" Text="First Name" />
            <Label Grid.Column="2" Text="Surname" />
            <Label Grid.Column="3" Text="Date Of Birth" />
        </Grid>
        <ListView x:Name="listView" ItemsSource="{Binding people}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                             <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="* />
                                <ColumnDefinition Width="* />
                                <ColumnDefinition Width="* />
                            </Grid.ColumnDefinitions>
                            <Label Grid.Column="1" Text="{Binding FirstName}" />
                            <Label Grid.Column="2" Text="{Binding Surname}" />
                            <Label Grid.Column="3" Text="{Binding Age}" />
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>


首先,
人员
不是公共属性。您只能绑定到公共属性。其次,网格您的模板内部完全独立于页面上的其他网格,因此您还需要为每个网格定义行和列。@Jason,我已将其作为公共属性,现在数据显示出来-谢谢。您能澄清我们的第二句话是什么意思吗?+1.您的模板内部有一个网格,但没有任何行定义或指定的列定义。您是否可以在此处查看我的类似问题: