在应用分组后,如何在父列表的listitem中绑定嵌套的listview?

时间:2018-04-04 23:30:42

标签: xaml listview data-binding xamarin.forms nested-lists

如何在父列表的listitem中绑定嵌套的listview。

我按照以下帖子,现在需要帮助绑定listitem数据模板中存在的嵌套listview的ItemSource。

https://montemagno.com/enhancing-xamarin-forms-listview-with-grouping/

how to bind list inside litview in xamarin.forms

有些事情如下 -

群组标题1

第1项

  • Listitem 1
  • Listitem 2

第2项

  • Listitem 1
  • Listitem 2

群组标题2

第1项

  • Listitem 1

第2项

  • Listitem 1
  • Listitem 2
  • Listitem 3

我的代码 -

<ContentPage.Content>
    <StackLayout Spacing="0">
        <StackLayout HeightRequest="5" HorizontalOptions="CenterAndExpand" BackgroundColor="{StaticResource Key=primary-back-title-color}">
            <Label HeightRequest="5" WidthRequest="800" HorizontalOptions="FillAndExpand" BackgroundColor="{StaticResource Key=primary-back-title-color}" />
        </StackLayout>
        <StackLayout HeightRequest="40" BackgroundColor="{StaticResource Key=page-name-background-color}" Orientation="Vertical">
            <Label VerticalOptions="CenterAndExpand" Margin="10,0,0,0" FontAttributes="Bold" TextColor="White" Text="My Cart" />
        </StackLayout>
        <ListView ItemsSource="{Binding VendorProduct}" HasUnevenRows="true" SeparatorVisibility="None" SelectedItem="none" IsGroupingEnabled="true" x:Name="CartProductListView" ItemSelected="Handle_ItemSelected">
            <ListView.GroupHeaderTemplate>
                <DataTemplate>
                    <ViewCell Height="20">
                        <Grid BackgroundColor="White" HeightRequest="25" Margin="0,0,0,5">
                            <Label Margin="10,1,0,1" FontSize="14" VerticalOptions="CenterAndExpand" FontAttributes="Bold" TextColor="{StaticResource Key=page-name-background-color}" Text="{Binding VendorName}">
                            </Label>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.GroupHeaderTemplate>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="15" />
                                    <RowDefinition Height="15" />
                                </Grid.RowDefinitions>
                                <StackLayout Margin="5,0,0,0" Grid.Row="0" Orientation="Horizontal">
                                    <Label FontSize="14" Text="DC-Customer Name: ">
                                    </Label>
                                    <Label FontSize="14" TextColor="#AD2C2C" Text="ABC-123456">
                                    </Label>
                                </StackLayout>
                                <StackLayout Margin="5,0,0,0" Grid.Row="1" Orientation="Horizontal">
                                    <Label FontSize="14" Text="Zone Price: ">
                                    </Label>
                                    <Label FontSize="14" TextColor="#AD2C2C" Text="$4.21">
                                    </Label>
                                </StackLayout>
                            </Grid>
                            <Grid Margin="10,10,0,0" ColumnSpacing="0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <RelativeLayout HeightRequest="94" Grid.Column="0" WidthRequest="{Binding DealsHeight}">
                                    <ListView ItemsSource="{Binding Deals}" Rotation="270" RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent,Property=Width,Factor=0.5,Constant=-47}" RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent,Property=Width,Factor=-0.5,Constant=47}" RelativeLayout.WidthConstraint="{ConstraintExpression Type=Constant,Constant=94}" RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent,Property=Width,Factor=1}" RowHeight="94" SeparatorVisibility="None" HasUnevenRows="true" BackgroundColor="White">
                                        <ListView.ItemTemplate>
                                            <DataTemplate>
                                                <ViewCell>
                                                    <ViewCell.View>
                                                        <Grid BackgroundColor="#BCD153" RowSpacing="1" Padding="1" Rotation="90" HeightRequest="94">
                                                            <Grid.RowDefinitions>
                                                                <RowDefinition Height="30" />
                                                                <RowDefinition Height="30" />
                                                                <RowDefinition Height="30" />
                                                            </Grid.RowDefinitions>
                                                            <StackLayout BackgroundColor="White" Grid.Row="0" Padding="5">
                                                                <Label Text="{Binding BookCode}" FontSize="13" />
                                                            </StackLayout>
                                                            <StackLayout BackgroundColor="White" Grid.Row="1" Padding="5">
                                                                <Label Text="{Binding Amount, StringFormat='${0} OFF'}" FontSize="13" />
                                                            </StackLayout>
                                                            <StackLayout BackgroundColor="White" Grid.Row="2">
                                                                <Entry Keyboard="Numeric" IsEnabled="{Binding IsQuantityEditable}" Text="{Binding Quantity}">
                                                                    <Entry.Behaviors>
                                                                        <converters:NumericMaxLengthBehavior x:Name="PhoneNumberValidator" />
                                                                    </Entry.Behaviors>
                                                                </Entry>
                                                            </StackLayout>
                                                        </Grid>
                                                    </ViewCell.View>
                                                </ViewCell>
                                            </DataTemplate>
                                        </ListView.ItemTemplate>
                                    </ListView>
                                </RelativeLayout>
                                <StackLayout Grid.Column="1">
                                    <Label Text="Month" VerticalOptions="CenterAndExpand" TextColor="Silver" FontSize="12" HeightRequest="30" />
                                    <Label Text="Discount" VerticalOptions="CenterAndExpand" TextColor="Silver" FontSize="12" HeightRequest="30" />
                                    <Label Text="Quantity" VerticalOptions="CenterAndExpand" TextColor="Silver" FontSize="12" HeightRequest="30" />
                                </StackLayout>
                            </Grid>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <Button Margin="0,20,0,0" Text="Propose Order" Command="{Binding ShowOrdersCommand}" BackgroundColor="{StaticResource Key=primary-back-title-color}" TextColor="White" VerticalOptions="Center" HorizontalOptions="Center" WidthRequest="200">
        </Button>
    </StackLayout>
</ContentPage.Content>

0 个答案:

没有答案