ListView ItemSource ObservableRangeCollection<> 访问模型 ObservableRangeCollection<>

ListView ItemSource ObservableRangeCollection<> accessing Model ObservableRangeCollection<>

我正在开发 .NET Xamarin 应用程序。我想在 Grouped-ListView 中将所有产品列为 ItemTemplate,将 Invoice.Name 列为 Header。目前我只得到 GroupHeaderTemplate 显示在我的 Grouped-ListView.

型号:Invoice.cs

public class Invoice : ObservableRangeCollection<Invoice>
{
    public string Name { get; set; }
    public Company Company { get; set; }
    public ObservableRangeCollection<Product> Products { get; set; }
}

型号:Products.cs

public class Product : ObservableRangeCollection<Product>
{
    public string Name { get; set; }
    public DateTime ExpireDate { get; set; }
}

ViewModel:MainViewVM(创建虚假数据)

public ObservableRangeCollection<Invoice> Invoices { get; set; }
public MainViewVM()
{
    Invoices.Add(new Invoice { Name = "Test1", Company = new Company { Image = image }, Products = new ObservableRangeCollection<Product>() { new Product { Name = "ProductTest1", CreatedDate = DateTime.Now }, new Product { Name = "ProductTest2", CreatedDate = DateTime.Now } } });
    Invoices.Add(new Invoice { Name = "Test2", Company = new Company { Image = image }, Products = new ObservableRangeCollection<Product>() { new Product { Name = "ProductTest3", CreatedDate = DateTime.Now }, new Product { Name = "ProductTest4", CreatedDate = DateTime.Now } } });
}

视图:MainViewVM(列表视图)

<ListView
IsGroupingEnabled="True"
ItemsSource="{Binding Invoices}">
<ListView.GroupHeaderTemplate>
    <DataTemplate x:DataType="models:Invoice">
        <ViewCell>
            <StackLayout Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="Center">
                <Image Source="{Binding Company.Image}" WidthRequest="66" VerticalOptions="Center"/>
                <Label Text="{Binding Name}" VerticalOptions="Center"/>
            </StackLayout>
        </ViewCell>
    </DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
    <DataTemplate x:DataType="models:Product">
        <ViewCell>
            <StackLayout VerticalOptions="Center">
                <Label Text="{Binding Name}" VerticalOptions="Center"/>
            </StackLayout>
        </ViewCell>
    </DataTemplate>
</ListView.ItemTemplate>

我添加了一个构造函数:base。这对我来说是固定的。 https://docs.microsoft.com/de-de/xamarin/xamarin-forms/user-interface/collectionview/grouping

public Invoice(string name, Company company, ObservableRangeCollection<Product> products) : base(products)
        {
            Name = name;
            Company = company;
            Products = products;
        }