XAML 可以用ObservableCollection绑定Collectionview中的Array吗?

6yt4nkrj  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(151)

我是新来的,也是新来的.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;
}


我的结构

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; }
}

t40tm48m

t40tm48m1#

我通过在另一个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>

字符串

相关问题