ListView是UI库在大多数现代操作系统中提供的图形屏幕控件或窗口小部件,用于以列表形式显示项目。
MAUI:Listview 中的 UI 对齐问题,网格有 3 列
我在 Listview 中遇到 UI 对齐问题,其中 Grid 有 3 列,如下图所示: 我的列表视图代码: 我在 Listview 中遇到 UI 对齐问题,网格有 3 列,如下图所示: 我的列表查看代码: <ListView x:Name="MyCustomers" ItemsSource="{Binding AllItems,Mode=TwoWay}" RowHeight="{OnIdiom Phone=80, Tablet=110, Desktop=80}" IsPullToRefreshEnabled="True" HasUnevenRows="True" CachingStrategy="RecycleElement" RefreshCommand="{Binding RefreshCommand}" IsRefreshing="{Binding IsRefreshing}"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <ViewCell.View> <Grid HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand"> <Grid.ColumnDefinitions> <ColumnDefinition Width="2*" /> <ColumnDefinition Width="6*" /> <ColumnDefinition Width="2*" /> </Grid.ColumnDefinitions> <Grid Grid.Column="0" HorizontalOptions="Start"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="12.25*" /> </Grid.ColumnDefinitions> <Grid VerticalOptions="CenterAndExpand" HorizontalOptions="Start" Grid.Column="1"> <Image Source="ic_profilebg_xx.png" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" x:Name="imagebg" Aspect="AspectFit"> <Image.HeightRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>60</OnIdiom.Phone> <OnIdiom.Tablet>90</OnIdiom.Tablet> <OnIdiom.Desktop>60</OnIdiom.Desktop> </OnIdiom> </Image.HeightRequest> <Image.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>60</OnIdiom.Phone> <OnIdiom.Tablet>90</OnIdiom.Tablet> <OnIdiom.Desktop>60</OnIdiom.Desktop> </OnIdiom> </Image.WidthRequest> </Image> <Label Text="{Binding user.fullname,Converter={StaticResource profilenameConverter}}" Style="{StaticResource InitalLabelStyle}"/> </Grid> </Grid> <StackLayout Grid.Column="1" Margin="3,0,0,0" HorizontalOptions="Start" VerticalOptions="CenterAndExpand" Orientation="Vertical"> <Label Text="{Binding user.fullname, Converter={StaticResource nameConverter}}" FontFamily="Bold" VerticalTextAlignment="Center" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" TextColor="#676767" IsVisible="{Binding user.fullname, Converter={StaticResource nullCheckConverter}}"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>15</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>15</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <Label Text="{Binding user.email}" VerticalOptions="CenterAndExpand" TextColor="#676767" VerticalTextAlignment="Center" HorizontalOptions="Start" HorizontalTextAlignment="Start" IsVisible="{Binding user.email , Converter={StaticResource nullCheckConverter}}"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>12</OnIdiom.Phone> <OnIdiom.Tablet>18</OnIdiom.Tablet> <OnIdiom.Desktop>12</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <Label Text="{Binding phoneNumber, Converter={StaticResource phoneNumberFormatConverter}}" VerticalTextAlignment="Center" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" TextColor="#676767" IsVisible="{Binding isPhoneEmpty}"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>12</OnIdiom.Phone> <OnIdiom.Tablet>18</OnIdiom.Tablet> <OnIdiom.Desktop>12</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <!--<StackLayout.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>200</OnIdiom.Phone> <OnIdiom.Tablet>300</OnIdiom.Tablet> <OnIdiom.Desktop>200</OnIdiom.Desktop> </OnIdiom> </StackLayout.WidthRequest>--> </StackLayout> <StackLayout Grid.Column="2" Orientation="Vertical" VerticalOptions="CenterAndExpand" HorizontalOptions="EndAndExpand"> <StackLayout Margin="0,0,0,5" HorizontalOptions="FillAndExpand" BackgroundColor="#5abcd7"> <Label Text="{Binding pointsToVisualize}" FontFamily="Bold" HorizontalOptions="CenterAndExpand" HorizontalTextAlignment="Center" TextColor="White"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>15</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>15</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <!--<StackLayout.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>80</OnIdiom.Phone> <OnIdiom.Tablet>120</OnIdiom.Tablet> <OnIdiom.Desktop>80</OnIdiom.Desktop> </OnIdiom> </StackLayout.WidthRequest>--> <StackLayout.Padding> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </StackLayout.Padding> </StackLayout> <StackLayout Orientation="Horizontal"> <Image VerticalOptions="Center" Source="ic_action_time.png"> <Image.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>13</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>13</OnIdiom.Desktop> </OnIdiom> </Image.WidthRequest> <Image.HeightRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>13</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>13</OnIdiom.Desktop> </OnIdiom> </Image.HeightRequest> </Image> <Label Margin="2,0,0,0" Text="{Binding user.updatedTime, Converter={StaticResource cnvDateTimeConverter}}" TextColor="#5abcd7" HorizontalOptions="FillAndExpand" VerticalOptions="Center"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>10</OnIdiom.Phone> <OnIdiom.Tablet>15</OnIdiom.Tablet> <OnIdiom.Desktop>10</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <StackLayout.Margin> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </StackLayout.Margin> <!--<StackLayout.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>115</OnIdiom.Phone> <OnIdiom.Tablet>300</OnIdiom.Tablet> <OnIdiom.Desktop>50</OnIdiom.Desktop> </OnIdiom> </StackLayout.WidthRequest>--> </StackLayout> </StackLayout> <Grid.Margin> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </Grid.Margin> <Grid.Padding> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </Grid.Padding> </Grid> </ViewCell.View> </ViewCell> </DataTemplate> </ListView.ItemTemplate> <ListView.Footer> <Label/> </ListView.Footer> </ListView> 我尝试在演示项目中重现此问题,并且在演示中工作正常。演示项目已上传此处。 使用相同的代码,UI在演示项目中没有问题,但在我的实际项目中出现问题,可能是什么原因? 注意:如果我取消第二列的 StackLayout.WidthRequest 注释,UI 对齐问题就会得到解决。 我已经复制了你的项目并重现了你的问题。 使用相同的代码,UI在演示项目中没有问题,但在我的实际项目中出现问题,可能是什么原因? 这是因为演示项目中列表视图的所有项目都是相同的。但是你的真实项目每个项目都有不同的数据(堆栈布局不同)。 如果我取消第二列的 StackLayout.WidthRequest 注释,UI 对齐问题就会得到解决。 这是因为您使每个项目的宽度相同。我发现 StackLayout 中的 HorizontalOptions="Start" 不适用于您的项目(目标 .net 7.0)。但我在 .net 8.0 中测试了相同的代码,并且 HorizontalOptions="Start" 运行良好。 UI 对齐问题消失了。 因此您可以尝试将项目升级到目标网络 8.0 来解决此问题。并且您可以在存储库上报告此问题。
如何实现用户滑动分页? (之前使用过 UICollectionView -> 启用分页)
背景:我正在将一个项目从 UIKit 转换为 SwiftUI。目前使用 UIKit,我在 UICollectionView 中有一个 UICollectionView,两者都启用了分页。这允许用户向上/向下滑动和
SwiftUI:如何实现用户滑动分页? (之前使用过 UICollectionView -> 启用分页)
背景:我正在将一个项目从 UIKit 转换为 SwiftUI。目前使用 UIKit,我在 UICollectionView 中有一个 UICollectionView,两者都启用了分页。这允许用户向上/向下滑动和
我在 Flutter 应用程序中遇到一个问题,在 TextFormField 中仅输入或删除一个字符后键盘会自动关闭。我有一个带有 Dismissible wid 的 ListView.builder...
我是编码新手,所以请温柔对待我。我尝试过研究这个主题,但似乎找不到能让我走上正确道路的答案。 我有一个程序,有一个 ListView 并在...
在 Qt6 QML 中的 ListView 中将项目向右对齐
我想要一个适合其最大项目宽度的ListView。 我还希望列表视图中的项目右对齐。 因此,作为一种天真的方法,我这样做了: 窗户 { 宽度:64...
应该足够简单和常见:我想覆盖 GridView ColumnHeader 上的悬停颜色。 所以我使用 、a 和 a ,...
WPF 如何从 ListView GridView 中绑定到 ViewModel 中的 ICommand?
我有一个使用 MVVM 的 WPF 应用程序。我有一个以视图模型作为其数据上下文的视图。在视图内部,我有一个绑定到可观察集合的 ListView。在 ListView 的每一行上,我都有...
我想创建一个水平列表视图,它以一定的速度自动滚动,无需用户干预。另外,这个滚动应该无限地完成,并且列表视图应该重复。 在...
将鼠标悬停在 ListTile 上的菜单项上会突出显示包含它的列表项,并且不会消失
使用下面的代码,当我单击菜单锚点按钮并将鼠标悬停在菜单项上时,其下方的 ListTile 也会突出显示。之后,关闭菜单将
Flutter:将鼠标悬停在 ListTile 上的菜单项上会突出显示包含它的列表项,并且不会消失
使用下面的代码,当我单击菜单锚点按钮并将鼠标悬停在菜单项上时,其下方的 ListTile 也会突出显示。之后,关闭菜单将
C# WPF ListView SelectedItem 在失去焦点时保持值
问题:当我尝试按下与 ListView 面板不同的另一个面板上的按钮时,失去 ListView 项目焦点并因此重置 SelectedItem 属性。我需要保持专注(可选...
我只希望表日历的标题显示每月的结果,这就是为什么将日历重叠到标题与另一列,其中显示数据列表,一切正常,但...
我正在尝试创建一个聊天屏幕,一切正常,直到我将一条消息添加到我的消息列表中并且它必须显示在屏幕上。然后应用程序崩溃并出现以下错误:
是否可以将多个DataGrid放入ListView中?就像是 是否可以将多个 DataGrid 放入 ListView 中?类似的东西 <ListView ItemsSource="{Binding Schools}"> <DataGrid ItemsSource="{Binding Schools.Teachers}" /> </ListView> 上课地点: public class MainViewModel { public ObservableCollection<School> Schools { get; set; } } public class School { public ObservableCollection<Teacher> Teachers { get; set; } } public class Teacher { public string Name { get; set; } public string ID { get; set; } public string Address { get; set; } public string Ranking { get; set; } } 输出基本上是一个 DataGrid 列表,每个 DataGrid 对应一个 School。 School1 ------------------------------------------------------------------- | Name | ID | Address | Ranking | ------------------------------------------------------------------- | Teacher1 Name | Teacher1 ID | Teacher1 Addr | Teacher1 Rank | ------------------------------------------------------------------- | Teacher2 Name | Teacher2 ID | Teacher2 Addr | Teacher2 Rank | ------------------------------------------------------------------- School2 ------------------------------------------------------------------- | Name | ID | Address | Ranking | ------------------------------------------------------------------- | Teacher1 Name | Teacher1 ID | Teacher1 Addr | Teacher1 Rank | ------------------------------------------------------------------- | Teacher2 Name | Teacher2 ID | Teacher2 Addr | Teacher2 Rank | ------------------------------------------------------------------- 我将如何构建这种显示的 xaml? DataGrid 将在分配给 ListBox 的 ItemTemplate 属性的 DataTemplate 中声明(除非您设置 ListView 的 View 属性,否则使用更简单的基类 ListBox)。 在 DataTemplate 内,绑定将是 ItemsSource="{Binding Teachers}"。 有关详细信息,请参阅数据模板概述。 <ListBox ItemsSource="{Binding Schools}"> <ListBox.ItemTemplate> <DataTemplate> <DataGrid ItemsSource="{Binding Teachers}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
我创建了一个回收器视图,并添加了一个带有 2dp 描边的圆角矩形作为背景,但是当项目进出框架时,会越过圆角 我尝试添加填充和
如何在ListView的现有元素中添加新元素或创建新的ListView元素?
我有以下情况:我想创建一个包含按日期排序的集合的ListView。所以,我有一个问题:如何将列表的新元素添加到现有小部件或创建新的
我正在使用 future 从服务器加载数据,并使用列表视图构建器在列表视图中显示数据,并在滚动到列表末尾时添加新列表,但我无法显示
我有一个带有圆角边缘的ListView。如何使 InkWell 的飞溅与 ListView 的边框重合? 现在的水花是什么样子的: 我的代码: 最终 borderRadius = BorderRad...
我在页面上有数据源、自动完成组件和ListView。两者都使用数据源。 ListView显示来自DataSource的数据,自动完成过滤ListView中的数据。 当我输入 AutoComplete com 时...