ListView是UI库在大多数现代操作系统中提供的图形屏幕控件或窗口小部件,用于以列表形式显示项目。
从 Xamarin.Forms 迁移后如何删除 MAUI ListView 中的分隔符?
我最近将我的 Xamarin.Forms 项目迁移到 .NET MAUI。在 Xamarin.Forms 中,我的 ListView 显示的项目之间没有分隔符,但迁移后,我看到这些分隔线
我在尝试为 WPF 窗口创建 UI 时遇到了相当困难。我正在尝试(动态地)显示一堆电影海报,其电影名称直接位于图像下方。项目所以...
我可以在ListView中看到滚动条,并且可以滚动ListView。但问题是我无法使用/拖动滚动条来滚动 ListView。它只是作为一个指标出现,并没有
如何在asp:ListView LayoutTemplate ItemTemplate中使用asp:Table
当我调用ListView的DataBind()方法时收到以下异常消息 “Table”不能有“ListViewDataItem”类型的子项。 这是我的标记 当我调用 ListView 的 DataBind() 方法时,收到以下异常消息 'Table' cannot have children of type 'ListViewDataItem'. 这是我的标记 <asp:ListView ID="lv" runat="server"> <LayoutTemplate> <asp:Table ID="t" runat="server" CssClass="contentframework"> <asp:TableHeaderRow> <asp:TableHeaderCell>1</asp:TableHeaderCell> <asp:TableHeaderCell>2</asp:TableHeaderCell> </asp:TableHeaderRow> <asp:TableRow ID="itemPlaceHolder" runat="server" /> </asp:Table> </LayoutTemplate> <ItemTemplate> <asp:TableRow> <asp:TableCell><%# Eval("1") %></asp:TableCell> <asp:TableCell><%# Eval("2") %></asp:TableCell> </asp:TableRow> </ItemTemplate> <EmptyDataTemplate> <h2>No Records!</h2> </EmptyDataTemplate> </asp:ListView> Asp.net 服务器端控件有一些层次结构。所以它不允许 ListViewDataItem 作为 asp:Table 元素的子元素。 所以,最好尝试简单的 html 表标签而不是服务器端标签,如: <asp:ListView ID="lv" runat="server"> <LayoutTemplate> <table id="t" class="contentframework"> <thead> <th> 1 </th> <th> 2 </th> </thead> <tr id="itemPlaceholder" runat="server"></tr> </table> </LayoutTemplate> <ItemTemplate> <tr> <td> <%# Eval("1") %> </td> <td> <%# Eval("2") %> </td> </tr> </ItemTemplate> <EmptyDataTemplate> <h2> No Records!</h2> </EmptyDataTemplate> </asp:ListView> 作为列表视图的参考,您可以查看this文章。 更多详情: 您面临的异常是因为, ListViewDataItem 类代表 ListView 控件中的单个数据项(即 DataBoundControl),因此它不能直接是 Table 类的子控件,但显然它可以是 HTML 表的子控件你直接将它嵌入到html标签中(如上面的代码所示)。 试试这个: <LayoutTemplate> <asp:Table ID="t" runat="server" CssClass="contentframework"> <asp:TableHeaderRow> <asp:TableHeaderCell>1</asp:TableHeaderCell> <asp:TableHeaderCell>2</asp:TableHeaderCell> </asp:TableHeaderRow> <asp:PlaceHolder id="itemPlaceholder" runat="server" /> </asp:Table> </LayoutTemplate> 这应该允许列表项填充为实际行。 您必须在 asp:TableRow 中嵌套一个 asp:tableCell,然后占位符应该在 tablecell 中工作 <asp:TableRow runat="server"> <asp:TableCell ID="TableCell2" runat="server"> <asp:PlaceHolder runat="server" ID="itemplaceholder" /> </asp:TableCell> </asp:TableRow>` 这对我来说非常有用。 解决方案: 您必须将占位符服务器控件嵌套在 表行服务器控件。 ListViewDataItem 可以应用于 占位符控件没有错误。 <asp:ListView ID="lv" runat="server"> <LayoutTemplate> <asp:Table ID="t" runat="server" CssClass="contentframework"> <asp:TableHeaderRow> <asp:TableHeaderCell>1</asp:TableHeaderCell> <asp:TableHeaderCell>2</asp:TableHeaderCell> </asp:TableHeaderRow> <asp:TableRow ID="itemPlaceholder1" runat="server"> <asp:TableCell ID="TableCell1" runat="server"> <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> </asp:TableCell> </asp:TableRow> </asp:Table> </LayoutTemplate> <ItemTemplate> <asp:TableRow> <asp:TableCell><%# Eval("1") %></asp:TableCell> <asp:TableCell><%# Eval("2") %></asp:TableCell> </asp:TableRow> </ItemTemplate> <EmptyDataTemplate> <h2>No Records!</h2> </EmptyDataTemplate> </asp:ListView>
我有一个嵌套在网格视图中的列表视图。 我正在尝试在列表视图上进行分页。 我以为它会显示分页控件,然后正常地翻阅它们。 它确实...
在对话框中,当显示列表并且打开键盘进行搜索时,列表无法滚动到最后一个索引,并且列表看起来像是从底部剪切的。如果我打开的话你可以在这个视频中看到
在滚动控制器上添加监听器以 animateTo 偏移量不起作用
在尝试在 ReorderableListView 的标题上创建捕捉效果时,我编写了以下代码。但是 jobWidgetListener 函数没有将我的列表项动画到所需的偏移量。 在...
我有一个QML应用程序,里面有一个ScrollView和一个ListView。 ListView 中的项目具有可变的高度。 我需要知道滚动条何时移动,事实上,它何时位于底部并且
如何让android ListView项目选择器使用state_checked
我绞尽脑汁试图让 Android ListView 来做我想做的事情。 我想要一个处于单选模式的 ListView,具有自定义行布局,该布局具有不同的背景颜色供选择,
我的问题是,当我滚动 ListView 元素时,元素会滚动到矩形的边框上,即使我已将 ListView 包裹在矩形内。 如何让元素滚动而不......
带有 ObserveableCollection 的 WPF Listview 不会从 UdpClient 更新,而是从计时器更新
我现在尝试了几种建议的解决方案,但我陷入困境。 我有一个 WPF MVVM 应用程序,它应该列出通过 UDP 客户端传递的所有字符串并更新它。 我不知道为什么,但我的收藏得到了
如何从 AlertDialog 中的列表视图获取 onItemclick
我有一个带有三个相同按钮和三个相同文本视图的活动。每个按钮 onClick 都会通过以下代码调用 AlertDialog: PickerDialog = new PickerDialogFragment();
我在使用 ListView 时遇到问题。 ListView 太长,部分出现在窗口之外,但我无法附加滚动条。我尝试了很多不同的组合。我认为问题在于
假设我有以下ListView: 假设我有以下 ListView: <ListView ScrollViewer.VerticalScrollBarVisibility="Auto"> <ListView.View> <GridView> <GridViewColumn Header="Something" DisplayMemberBinding="{Binding Path=ShortText}" /> <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=VeryLongTextWithCRs}" /> <GridViewColumn Header="Something Else" DisplayMemberBinding="{Binding Path=AnotherShortText}" /> </GridView> </ListView.View> </ListView> 我希望短文本列始终适合屏幕,长文本列使用剩余空间,必要时可自动换行。 这可能吗? 使用 GridListView 没有简单的方法来做到这一点,因为它不支持将列的宽度设置为“*”(填充剩余空间)。 这里讨论了如何通过使用 IValueConverter 将列的宽度设置为 TotalListWidth - SumOfColumnWidths 来伪造它 另一方面,您是否考虑过使用 DataGrid 来代替?这将支持您正在寻找的布局类型,尽管这是一个相当重的控件。它也仅在 .NET 4 中原生 - 尽管您可以通过 WPF Toolkit 获得 3.5 的等效版本。 <Grid Name="dummygrid" Visibility="Hidden"> <Grid.ColumnDefinitions> <ColumnDefinition Width="0.5*"></ColumnDefinition> <ColumnDefinition Width="0.2*"></ColumnDefinition> <ColumnDefinition Width="0.1*"></ColumnDefinition> <ColumnDefinition Width="0.2*"></ColumnDefinition> <ColumnDefinition Width="150"></ColumnDefinition> </Grid.ColumnDefinitions> <Border Grid.Column="0" Name="dummywidth1"></Border> <Border Grid.Column="1" Name="dummywidth2"></Border> <Border Grid.Column="2" Name="dummywidth3"></Border> <Border Grid.Column="3" Name="dummywidth4"></Border> <Border Grid.Column="5" Name="dummywidth5"></Border> </Grid> <ListView Name="Installer_LV" Grid.Row="1" ItemContainerStyle="{StaticResource LV_ItemStyle}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" AlternationCount="2"> <ListView.View> <GridView ColumnHeaderContainerStyle="{StaticResource LV_HeaderStyle}"> <GridViewColumn Width="{Binding ElementName=dummywidth1, Path=ActualWidth}" DisplayMemberBinding="{Binding DisplayName}" > <GridViewColumn.Header> <GridViewColumnHeader Tag="DisplayName" Click="InstallerLV_HeaderClick">Name</GridViewColumnHeader> </GridViewColumn.Header> </GridViewColumn> <GridViewColumn Width="{Binding ElementName=dummywidth2, Path=ActualWidth}" DisplayMemberBinding="{Binding Publisher}"> <GridViewColumn.Header> <GridViewColumnHeader Tag="Publisher" Click="InstallerLV_HeaderClick">Publisher</GridViewColumnHeader> </GridViewColumn.Header> </GridViewColumn> <GridViewColumn Width="{Binding ElementName=dummywidth3, Path=ActualWidth}" DisplayMemberBinding="{Binding Version}"> <GridViewColumn.Header> <GridViewColumnHeader Tag="Version" Click="InstallerLV_HeaderClick">Version</GridViewColumnHeader> </GridViewColumn.Header> </GridViewColumn> <GridViewColumn Width="{Binding ElementName=dummywidth4, Path=ActualWidth}" DisplayMemberBinding="{Binding Size}"> <GridViewColumn.Header> <GridViewColumnHeader Tag="Size" Click="InstallerLV_HeaderClick">Size</GridViewColumnHeader> </GridViewColumn.Header> </GridViewColumn> <GridViewColumn Header="Action" Width="150"> <GridViewColumn.CellTemplate> <DataTemplate> <Button Height="38" Width="130" Style="{DynamicResource RoundedButton}" Content="{Binding Status}" Tag="{Binding ModuleId}" HorizontalAlignment="Center" VerticalAlignment="Center" Click="onActionClick"></Button> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> 在上面的示例中,我使用了虚拟网格并分成 5 列,并使用绑定将该大小分配给“GridViewColum” 宽度=“{绑定元素名称=虚拟宽度4,路径=实际宽度}” 这样,当隐藏的虚拟网格列大小发生变化时,它也会反映在 gridview 列大小中。 在 GridViewColumns 上设置 Width="Auto"。 但是,由于虚拟化,您可能会遇到一些自动调整大小的问题。 看到这个问题。 因此,长话短说,如果您想要准确地自动调整列大小,则需要在可见数据因虚拟化而发生变化时重新计算宽度。 这对我有用,对于没有明确设置宽度的任何列,将 Width 切换到 ActualWidth,然后返回 NaN。 仅当列表视图列不包含控件时,这才有效。 我通常在列表中的数据发生更改后调用此方法。 Public Shared Sub AutoResizeListView(lst As Windows.Controls.ListView) Dim gv = DirectCast(lst.View, Windows.Controls.GridView) For Each gvc In gv.Columns If Double.IsNaN(gvc.Width) Then gvc.Width = gvc.ActualWidth gvc.Width = Double.NaN End If Next End Sub 首先在列标题中设置名称,如下所示: <GridViewColumn Header="Description" Width="350" x:Name="lvhDescription"/> 然后调整大小修改宽度。 Private Sub winMain_SizeChanged(sender As Object, e As SizeChangedEventArgs) Handles Me.SizeChanged If Me.IsLoaded = False Then Exit Sub lvhDescription.Width = e.NewSize.Width - 665 End Sub 我想提出另一种方法来调整具有最大元素宽度的每列的大小。 在循环的帮助下对每个列表视图项执行以下操作。 调整窗口大小事件后无需更改大小。 将 UnitWidth 保留为恒定字体宽度大小。 您还可以定义 SourceUpdated 事件的委托。 GridView gv = (myListView.View as GridView); if (titleLen < c.Title.Length) { titleLen = c.Title.Length; gv.Columns[0].Width = titleLen * UnitWidth; } if (cssLen < c.CSSName.Length) { cssLen = c.CSSName.Length; gv.Columns[1].Width = cssLen * UnitWidth; } if (valueLen < c.Value.Length) { valueLen = c.Value.Length; gv.Columns[2].Width = valueLen * UnitWidth; } 尝试使用此代码, private void Window_SizeChanged(object sender, SizeChangedEventArgs e) { double remainingSpace = mylistviewname.ActualWidth; if (remainingSpace > 0) { (mylistviewname.View as GridView).Columns[1].Width = Math.Ceiling(remainingSpace / 3); (mylistviewname.View as GridView).Columns[2].Width = Math.Ceiling(remainingSpace / 3); (mylistviewname.View as GridView).Columns[3].Width = Math.Ceiling(remainingSpace / 3); } } 这里我使用 SizeChanged 事件,因此当窗口大小更改时,会触发此函数并更新 listviewheader 的宽度。我有 3 个列表视图标题,因此如果您有超过 3 个除以适当值的值,则除以 3。 <ListView ScrollViewer.VerticalScrollBarVisibility="Auto" Name="someList"> <ListView.View> <GridView> <GridViewColumn Width={Binding ElementName=someList, Path=ActualWidth/3} Header="Something" DisplayMemberBinding="{Binding Path=ShortText}" /> <GridViewColumn Width={Binding ElementName=someList, Path=ActualWidth/3} Header="Description" DisplayMemberBinding="{Binding Path=VeryLongTextWithCRs}" /> <GridViewColumn Width={Binding ElementName=someList, Path=ActualWidth/3} Header="Something Else" DisplayMemberBinding="{Binding Path=AnotherShortText}" /> </GridView> </ListView.View> </ListView> 使用@joee解决方案,它会产生“ArgumentOutOfRangeException”: System.ArgumentOutOfRangeException:'索引超出范围。必须为非负数且小于集合的大小。 Arg_ParamName_Name' 试试这个: private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) { double remainingSpace = SomeListViewName.ActualWidth; var gridView = (GridView)OrderListView.View; if (remainingSpace > 0) { foreach (var column in gridView.Columns) { column.Width = Math.Ceiling(remainingSpace / 12); } } } 就我而言,我有 12 列。因此下降了 12
在哪里放置notifyDataSetChanged();在 customAdapter 中,这样 listView 就不会丢失滚动数据
我知道网上有关于notifyDataSetChanged()的信息;以及如何使用它,但我似乎无法弄清楚如何在我的具体情况下使用它。我不知道我是否应该称它为...
由 ArrayAdapter 管理的 ListView 中 ImageView 的 onClickListener
我有一个 ListView,其中内容由自定义 ArrayAdapter 处理。我使用的布局有一个 TextView 和一个 ImageView。 布局: <
WinUI ListView 项目高度在低于特定阈值时不起作用
尽管为ListView项模板设置了边距、高度、最小高度等,但仍然存在一定的最小高度阈值,ListView似乎在其中创建了自己的cer容器...
我有一个代码,它加载新闻列表: public View onCreateView(LayoutInflater inflater, ViewGroup 容器, 捆绑已保存实例状态) { 查看view=inflater.infla...
我再次需要你的帮助。 我有一个按标题第一个字母分组的电影列表 我正在编写一个例程,当按下两个键(PageDown 和 PageUp)时,将放置在...
onEndReachedThreshold 在react-native 中的真正含义
来自文档: onEndReachedThreshold 数量 调用 onEndReached 的阈值(以像素为单位,虚拟的,非物理的)。 所以我只是想知道这意味着什么,是从顶部开始的阈值,还是......