Xamarin.Forms ListView 大小到内容

2024-01-06

我有一个相当大的表单(主要适用于平板电脑),它有一个 GridView 嵌套两个 stacklayouts 和 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;

我的项目图片 https://i.stack.imgur.com/h5Bde.png

只是我想消除列表视图和堆栈布局之间的差距


而不是使用 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# 代码来做,因为我注意到你没有绑定你的 ListView

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin.Forms ListView 大小到内容 的相关文章

随机推荐

  • 在 SQL Server 2008 中加密 SSN 的最佳方法是什么?

    我正在使用 NET 3 5 和 SQL Server 2008 开发一个新的 Web 应用程序 该应用程序需要存储一些社会安全号码 我一直在对数据库加密进行一些初步阅读 它有点令人困惑 我希望使用非对称密钥对 SSN 进行加密 因为这样 一
  • 启用远程 MySQL 连接:错误 1045 (28000):用户访问被拒绝

    MySQL 5 1 31 运行在 Windows XP 上 来自localMySQL 服务器 192 168 233 142 我可以以 root 身份连接 如下所示 gt mysql host 192 168 233 142 user ro
  • Java中如何读取文件字节? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何从文件中读取一个字节 并将其放入
  • 如何设置 htmlHelpers 项目以便它生成两个 dll - 用于 mvc3 和 mvc4?

    我有一个 html 助手库作为一个单独的项目 现在它引用了system web mvc版本 4 的 如果我尝试在使用 mvc3 的项目中使用此库 则在尝试使用助手时会抛出错误 Compiler Error Message CS1705 As
  • 如何在 AsyncTask 运行时禁用 Button? (安卓)

    我试图在执行下载任务时禁用按钮 我尝试过使用 setEnabled setVisibility 和 setClickable 我想我尝试了这些选项的所有组合 所有这些都在任务执行时禁用按钮单击事件 但事件仍然以某种方式注册 当我反应按钮时
  • 如何在 Eclipse 4.2 中设置运行时类路径?

    当我从 运行 菜单中选择 运行配置 时 我看不到像以前版本的 Eclipse 中那样名为 类路径 的选项卡 在哪里设置运行时类路径 在 Eclipse 中 查看您想要运行时配置的项目的 项目 gt 属性 选择运行 调试设置 然后选择新的或编
  • jQuery.contains() 无法正常工作

    在以下情况下我应该收到 警报 但我没有收到任何 警报 我正在尝试一个简单的例子jQuery Contains
  • 内联常量是什么意思?

    我正在读这个article https blog codecentric de en 2017 03 akka best practices defining actor props 有这样一段代码 object ChildActor fi
  • 如何在 Spring Batch 中读取复杂的 JSON?

    我下面有一个复杂的 JSON 我正在使用 FlatFileItemReader 阅读它 如何使用自定义的 ComplexJsonRecordSeparatorPolicy 忽略最后一行 firstName Tom lastName Crui
  • Mercurial `hg clone` 但忽略所有子存储库?

    有没有办法克隆带有子存储库的存储库 但不需要 Mercurial 提取所有子存储库 看来虽然hg clone U可以用来获取仓库的空克隆 没有什么可以说服的hg update以避免从拉出所有子存储库开始 我应该指出 在创建这样的克隆后 保留
  • Android ListView项目集错误

    我有一个列表视图 其中有 5 个项目 如果我尝试在第 4 个和第 5 个项目上设置错误 那么它会抛出空指针异常 例外 08 22 13 34 49 523 E AndroidRuntime 16952 FATAL EXCEPTION mai
  • 是否有更合适的方法来设置闭包编译器的 language_in 选项(播放 2.1)?

    我必须将闭包编译器中的 language in 选项配置为 ECMASCRIPT5 来编译 Ember Angular 和其他需要 ES5 的库 一定有更好的方法 但我是这样实现的 Build scala val root new java
  • Symfony 4 自定义事件调度程序不工作

    我按照 Symfony 4 3 文档创建了一个自定义事件 分派它并监听它 跟踪我的控制器的执行情况 看起来事件调度程序没有找到任何订阅者 并且我无法弄清楚我做错了什么 我的事件类非常基础 namespace App Event use Sy
  • NodeJS解码URI组件无法正常工作

    当我尝试使用decodeURLCompnent在nodeJS中解码下面的字符串时 var decoded decodeURI Ulysses 20Guimar C3 A3es 20 20lado 20par console log deco
  • DataGridView 绑定问题:“索引 -1 没有值。”

    我有一个绑定到绑定源的 datagridview 和表单上的几个按钮 一个按钮将项目添加到绑定源 另一个按钮删除当前选定的项目 还有一个事件处理程序 用于侦听 CurrentChanged 事件并更新 删除 按钮的 启用 状态 一切都很顺利
  • AWSElasticBeanstalkFullAccess(提供完全访问...)等效项?

    我正在学习有关 AWS Beanstalk 的课程 该课程可能已经过时 在 IAM 管理控制台中添加了一个用户 并且直接附加的现有策略之一是AWSElasticBeanstalkFullAccess 我自己在过滤策略时找不到它 这是改名了吗
  • 使用协议“YourProtocol”作为类型必须写为“any YourProtocol”错误

    我在实施协议时遇到错误 我已在名为 的文件中声明了如下协议 TransactionListViewViewModelItem swift 以下是我在此文件中的内容 protocol TransactionListViewViewModelI
  • 如何向 PHP/SQL 搜索脚本添加拼写建议

    使用 php sql 在我的网站上创建搜索功能 非常简单 只需使用 LIKE 子句在数据库上使用 SELECT ALL 查询并在页面上回显结果即可 我的问题是 如果用户输入错误的搜索查询 如何添加拼写建议 除非搜索词与数据库内容完全匹配 否
  • 如何在 MAT Eclipse 中使用 OQL 进行嵌入式查询

    我可以使用如下查询获取所有 Thread 对象 SELECT OBJECTS dominators s FROM java lang Thread s 那么如果我想对返回的结果对象进行进一步的分析 我认为OQL应该如下所示 SELECT f
  • Xamarin.Forms ListView 大小到内容

    我有一个相当大的表单 主要适用于平板电脑 它有一个 GridView 嵌套两个 stacklayouts 和 listview 我很少有一个 ListView 包含一些单行项目 并且我需要它来调整内容的大小 这是我的源代码