我是新来的,作为.Net Maui开发人员.我使用API,并通过GET请求接收要处理的数据.我收到的数据由收据组成,这些收据包含不同数量的物品位置.这些项目位置存储在数组中.是否可以动态显示此数组?

不带索引的绑定

<Label Text="{Binding ReceiptPosition[].ModelNumber}" Grid.Column="5" Grid.Row="0" Margin="5,0,0,0"/>
<Label Text="{Binding ReceiptPosition[].ModelDescription}" Grid.Column="6" Grid.Row="0" Margin="5,0,0,0"/>
<Label Text="{Binding ReceiptPosition[].Quantity}" Grid.Column="7" Grid.Row="0" Margin="5,0,0,0"/>
<Label Text="{Binding ReceiptPosition[].SellingPrice}" Grid.Column="7" Grid.Row="0" Margin="5,0,0,0"/>

我的视图模型

internal partial class BelegPageViewModel : ObservableObject
{
    [ObservableProperty]
    ObservableCollection<BelegStruktur> belegeCollection = new();

    [ObservableProperty]
    private BelegStruktur beleg;
}

我的 struct

internal class BelegStruktur
{
    public DateTime? Date { get; set; }
    public int StoreNumber { get; set; }
    public int PointOfSaleNumber { get; set; }
    public int ReceiptNumber { get; set; }
    public ReceiptPosition[]? ReceiptPosition { get; set; }
}

public class ReceiptPosition
{
    public string ModelNumber { get; set; }
    public string ModelDescription { get; set; }
    public float Quantity { get; set; }
    public float SellingPrice { get; set; }
}

推荐答案

我已经通过在另一个CollectionView中使用CollectionView解决了这个问题.

示例:

<CollectionView ItemsSource="{Binding BelegeCollection}">
     <CollectionView.ItemsLayout>
         <LinearItemsLayout Orientation="Vertical" />
     </CollectionView.ItemsLayout>
     <CollectionView.ItemTemplate>
         <DataTemplate x:DataType="{x:Type models:BelegStruktur}">
             <StackLayout>
                 <Label Text="{Binding Date}" />
                 <Label Text="{Binding StoreNumber}" />
                 <Label Text="{Binding PointOfSaleNumber}" />
                 <Label Text="{Binding ReceiptNumber}" />
                 <CollectionView ItemsSource="{Binding ReceiptPosition}">
                     <CollectionView.ItemTemplate>
                         <DataTemplate x:DataType="{x:Type models:ReceiptPosition}">
                             <StackLayout>
                                 <Label Text="{Binding ModelNumber}" />
                                 <Label Text="{Binding ModelDescription}" />
                                 <Label Text="{Binding Quantity}" />
                                 <Label Text="{Binding SellingPrice}" />
                             </StackLayout>
                         </DataTemplate>
                     </CollectionView.ItemTemplate>
                 </CollectionView>
             </StackLayout>
         </DataTemplate>
     </CollectionView.ItemTemplate>
 </CollectionView>

Csharp相关问答推荐

在C# 11之前, struct 中的每个字段都必须显式分配?不能繁殖

我需要两个属性类吗

不仅仅是一个简单的自定义按钮

返回TyedResults.BadRequest<;字符串>;时问题详细信息不起作用

在此系统上已禁用获取正在运行的脚本.&在ASP.NET Core Web API中

当前代码Cosmos DB 3.37.1:PartitionKey key key mismatch exception

取决于您的数据量的多个嵌套循环

如何在C#中转换泛型包装类内部的派生类

如何使用.NET6WPF打印车票?

如何更改新创建的实例的变量?

将操作从编辑页重定向到带参数的索引页

正在从最小API-InvocationConext.Arguments中检索参数的FromBodyAttribute

如何在.NET MAUI中最大化GraphicsView的大小?

如何使用EPPlus C#在单个单元格中可视化显示多行文字

如何在Polly重试策略成功之前将HttpClient请求排队?

C#命名管道-编码错误?

如何在C#.NET桌面应用程序中动态更改焦点工具上的后退 colored颜色

try 访问字典中的模拟对象时引发KeyNotFoundException

SqlException:无法打开数据库.升级到Dotnet 8后-数据库兼容性版本-非EFCore兼容性级别

根据运行时值获取泛型类型的字典