gpt4 book ai didi

c# - Xamarin.Forms ListView 大小到内容

转载 作者:行者123 更新时间:2023-11-30 22:52:15 26 4
gpt4 key购买 nike

我有一个相当大的表单(主要适用于平板电脑),它有一个 GridView 嵌套两个堆栈布局和 ListView

我的 ListView 很少出现包含一些单行项目的情况,我需要它根据内容调整大小。

这是我的源代码

<Grid Grid.Row="2" Grid.ColumnSpan="2" HorizontalOptions="FillAndExpand" x:Name="OrderPricingDetails">

<Grid.RowDefinitions>

<RowDefinition Height="90"/>

<RowDefinition Height="auto" x:Name="OrderPricingDetailsListRow"/>

<RowDefinition Height="90"/>

</Grid.RowDefinitions>

<StackLayout Grid.Row="0" Orientation="Vertical" Margin="10" Padding="10" x:Name="PackageSelectionSection" >
<Label Text="Order Pricing" FontAttributes="Bold" TextColor="Black" />
<Label Text="Listing details for this specific order" FontSize="Small" TextColor="#757575" />
<Frame CornerRadius="5" BackgroundColor="Transparent" HeightRequest="270" BorderColor="#c3c3c3" Padding="10,10,5,10" Margin="0,20,0,0">
<StackLayout>

<FlexLayout JustifyContent="SpaceBetween" HorizontalOptions="FillAndExpand" Direction="Row" AlignItems="Center" x:Name="SelectedPackageSection">
<StackLayout Orientation="Horizontal">
<Label Text="Selected Package " FontSize="Medium" />
</StackLayout>
<Label Text="ALA_CARTE_300" x:Name="selectedOfrferDesc" TextColor="#757575" FontAttributes="Bold" FontSize="Small" Grid.Column="1" Grid.ColumnSpan="2"/>
<Label Text="for" FontSize="Medium" />
<Label Text="LCD" x:Name="selectedOfferPrice" TextColor="#757575" FontAttributes="Bold" FontSize="Small" Margin="0,0,20,0" />
</FlexLayout>

</StackLayout>
</Frame>
</StackLayout>

<StackLayout Grid.Row="1" Orientation="Vertical" Margin="10" Padding="10" x:Name="ConnectionfeeSection" HorizontalOptions="FillAndExpand">

<ListView x:Name="OfferList" HasUnevenRows="True" VerticalOptions="Center" Margin="0,10,0,0" SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>

<Frame CornerRadius="5" OutlineColor="#c3c3c3" Padding="5,10,5,5" Margin="0,10,0,0" BackgroundColor="Transparent">
<StackLayout Orientation="Horizontal" Padding="5" BackgroundColor="Transparent" VerticalOptions="Center" >

<FlexLayout JustifyContent="SpaceBetween" HorizontalOptions="FillAndExpand" Direction="Row" AlignItems="Center" x:Name="SelectedConnectionfeeSection">
<StackLayout Orientation="Horizontal">
<Label Text="{Binding DisplayName}" FontSize="Medium" />
</StackLayout>
<Label Text="{Binding Amount}" x:Name="selectedConnectionfee" TextColor="#757575" FontAttributes="Bold" FontSize="Small" Margin="0,0,20,0" />
</FlexLayout>

</StackLayout>
</Frame>

</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

</StackLayout>

<StackLayout Grid.Row="2" Orientation="Vertical" Margin="10" Padding="10" x:Name="ConnectionTotalSection" >

<Frame CornerRadius="5" BackgroundColor="Transparent" BorderColor="#c3c3c3" Padding="20,10,5,10" Margin="0,10,0,0">

<StackLayout>
<FlexLayout JustifyContent="SpaceBetween" HorizontalOptions="FillAndExpand" Direction="Row" AlignItems="Center" x:Name="SelectedConnectionTotalSection">
<StackLayout Orientation="Horizontal">
<Label Text="Total " FontSize="Medium" />
</StackLayout>
<Label Text="{Binding Total, StringFormat='{0:N}'}" x:Name="selectedConnectionTotal" TextColor="#757575" FontAttributes="Bold" FontSize="Small" Margin="0,0,20,0" />
</FlexLayout>

</StackLayout>
</Frame>

</StackLayout>

</Grid>

这是我的代码。

        OrderPricingDetailsListRow.Height = 280;

OfferList.ItemsSource = connectionsNames;

int i = connectionsNames.Count;
int heightRowList = 90;
i = (i * heightRowList);
OfferList.HeightRequest = i;

My Project image

只是我想消除 ListView 和堆栈布局之间的差距

最佳答案

而不是使用 ListView 控件。只需使用 Stacklayout 并向其添加 BindableLayout 即可。它基本上将 Stacklayout 变成了 ListView 但没有滚动。

<StackLayout x:Name="OfferList" BindableLayout.ItemsSource="{Binding ConnectionNames}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Frame CornerRadius="5" OutlineColor="#c3c3c3" Padding="5,10,5,5" Margin="0,10,0,0" BackgroundColor="Transparent">
<StackLayout Orientation="Horizontal" Padding="5" BackgroundColor="Transparent" VerticalOptions="Center" >
<FlexLayout JustifyContent="SpaceBetween" HorizontalOptions="FillAndExpand" Direction="Row" AlignItems="Center" x:Name="SelectedConnectionfeeSection">
<StackLayout Orientation="Horizontal">
<Label Text="{Binding DisplayName}" FontSize="Medium" />
</StackLayout>
<Label Text="{Binding Amount}" x:Name="selectedConnectionfee" TextColor="#757575" FontAttributes="Bold" FontSize="Small" Margin="0,0,20,0" />
</FlexLayout>

</StackLayout>
</Frame>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>

或者你也可以用 C# 代码来完成,因为我注意到你没有绑定(bind)你的 ListView

DataTemplate useItemTemplate = null;
BindableLayout.SetItemTemplate(usersPanel, userItemTemplate);

这里有一个关于此功能的非常好的博客。 https://devblogs.microsoft.com/xamarin/xamarin-forms-3-5-a-little-bindable-love/

关于c# - Xamarin.Forms ListView 大小到内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com