listview 相关问题

ListView是UI库在大多数现代操作系统中提供的图形屏幕控件或窗口小部件,用于以列表形式显示项目。

SlidingUpPanel 内带有 Scrollables 的 Flutter PageView --> 错误状态:元素太多

我面临一个奇怪的问题:在调整 SlidingUpPanel 或/和 SlidingUpPanel2 中的示例时,SlidingUpPanel 包含一个包含每个 1 个可滚动小部件(ListView 或

回答 1 投票 0

ListView 中的 WPF 水平滚动条不适用于鼠标滚轮滚动

我有一个 ListView,其中有很多水平排列的项目,如果我按住滚动条然后移动它,我可以滚动 ListView,但是我想用鼠标滚轮向上/向下滚动 ListView

回答 1 投票 0

遍历 ListView(Vb.net) 中的每一列

如何遍历每一列以在列表视图中获取其值/数据? 我试过: 对于 lsvCurrent.Items 中的每个项目作为 ListViewItem 下一个 但是我收到“类型值

回答 1 投票 0

如何更改包含在列表视图标题中的 TextBlock 的值?

我有一个 Listview,仅将标题设置为显示另一个列表的总计。如何访问 Textblock tbkValue 以更改其 Text 属性? 我有一个 Listview,仅将标题设置为显示来自另一个列表的总计。如何访问 Textblock tbkValue 以更改其 Text 属性? <ListView x:Name="lvwTotals" Margin="1,0,3,3" ScrollViewer.HorizontalScrollBarVisibility="Auto" > <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> </Style> </ListView.ItemContainerStyle> <ListView.HeaderTemplate> <DataTemplate> <Grid Padding="12" Margin="3,5,1.5,5" Background="{ThemeResource SystemBaseLowColor}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="30"/> <ColumnDefinition Width="30"/> <ColumnDefinition Width="30"/> <ColumnDefinition Width="30"/> <ColumnDefinition Width="70"/> <ColumnDefinition Width="70"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" x:Uid="PlayPgTbkTotals" TextWrapping="NoWrap" FontSize="12" /> <TextBlock Grid.Column="1" x:Name="tbkValue" TextWrapping="NoWrap" FontSize="12" /> <TextBlock Grid.Column="2" TextWrapping="NoWrap" FontSize="12" /> <TextBlock Grid.Column="3" TextWrapping="NoWrap" FontSize="12" /> <TextBlock Grid.Column="4" TextWrapping="NoWrap" FontSize="12" /> <TextBlock Grid.Column="5" TextWrapping="NoWrap" FontSize="12" /> <TextBlock Grid.Column="6" TextWrapping="NoWrap" FontSize="12" /> </Grid> </DataTemplate> </ListView.HeaderTemplate> </ListView> 一个简单的方法是使用 VisualTreeHelper 类。 代码隐藏: private void Button_Click(object sender, RoutedEventArgs e) { var textblcok = MyFindChildByName(lvwTotals, "tbkValue") as TextBlock; textblcok.Text = "New Content"; } public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName) { int count = VisualTreeHelper.GetChildrenCount(parant); for (int i = 0; i < count; i++) { var MyChild = VisualTreeHelper.GetChild(parant, i); if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName) return MyChild; var FindResult = MyFindChildByName(MyChild, ControlName); if (FindResult != null) return FindResult; } return null; }

回答 1 投票 0

在 UWP 中为 ListView 数据模板处理数组项

我有以下 DataTemplate,用于我的 UWP 应用程序中的自定义 ListView 布局: 我有以下 DataTemplate,我在我的 UWP 应用程序中用于自定义 ListView 布局: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)" xmlns:utils="using:ClassevivaPCTO.Utils" x:Class="ClassevivaPCTO.Controls.DataTemplates.AgendaEventListViewDataTemplate" xmlns:muxc="using:Microsoft.UI.Xaml.Controls"> <utils:AgendaEvent x:Key="AgendaEvent"/> <DataTemplate x:Key="AgendaEventListViewDataTemplate" x:DataType="utils:AgendaEvent"> <RelativePanel> <TextBlock x:Name="eventTitle" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind subjectDesc}" Style="{ThemeResource BaseTextBlockStyle}" Margin="12,6,0,0" /> <TextBlock RelativePanel.RightOf="eventTitle" x:Name="eventType" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind evtCode}" Style="{ThemeResource BaseTextBlockStyle}" Margin="12,6,0,0" /> </RelativePanel> </DataTemplate> </ResourceDictionary> TextBlock 项的 Text 值绑定到名为 AgendaEvent 的自定义数据类型类: public class AgendaEvent { public int evtId { get; set; } public string evtCode { get; set; } public DateTime evtDatetimeBegin { get; set; } public DateTime evtDatetimeEnd { get; set; } public bool isFullDay { get; set; } public string notes { get; set; } public string authorName { get; set; } public string classDesc { get; set; } public object subjectId { get; set; } public object subjectDesc { get; set; } public object homeworkId { get; set; } } 这是我的列表视图: <ListView x:Name="ListViewAgendaEvents" SelectionMode="Single" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemTemplate="{StaticResource AgendaEventListViewDataTemplate}" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> </ListView> 从我从自定义数组工厂获得的AgendaEvent对象数组中,我将ItemsSource设置为ListView: ListViewAgendaEvents.ItemsSource = customArray.AgendaEvents; 我意识到,根据我的需要,eventTitle TextBlock 需要将属性 authorName 和 subjectDesc 组合在一起作为带有自定义装饰字符的字符串。例如:authorName + " - wrote: " + subjectDesc. 并不总是 subjectDesc 可用,所以我需要通过各种条件检查来动态调整 eventTitle 文本块。 我考虑过使用适配器类,就像 Android 的列表视图一样,但是使用 UWP 的数据绑定,如何完成我想做的事情是非常混乱的。 是否有一种简单直接的方法来组合自定义字符串中的属性并在显示 UWP 中的 ListView 中使用的 DataTemplate 的属性之前执行检查? 更新3 UWP 不支持多个数据绑定,它只接受单个值。如果您不想更改 Xaml 绑定,请尝试在 DataModel 中进行。在 AgendaEvent 类中创建一个新的消息字符串并进行检查将是最简单的方法。 public class AgendaEvent { public int evtId { get; set; } public string evtCode { get; set; } public DateTime evtDatetimeBegin { get; set; } public DateTime evtDatetimeEnd { get; set; } public bool isFullDay { get; set; } public string notes { get; set; } public string authorName { get; set; } public string classDesc { get; set; } public object subjectId { get; set; } public object subjectDesc { get; set; } public object homeworkId { get; set; } public string messageString { get { if (subjectDesc == null) { return authorName; } return authorName + " - wrote: " + subjectDesc; } } } Xaml: <TextBlock x:Name="eventTitle" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind messageString}" Style="{ThemeResource BaseTextBlockStyle}" Margin="12,6,0,0" /> 更新2: 我想出了另一种方法,应该也能达到你想要的效果。它需要不同的模板。您只需要根据使用 DataTemplateSelector Class 的值选择不同的DataTemplate 代码隐藏: public class MyDataTemplateSelector : DataTemplateSelector { public DataTemplate Normal { get; set; } public DataTemplate Unusual { get; set; } protected override DataTemplate SelectTemplateCore(object item) { AgendaEvent agendaEvent = (AgendaEvent)item; // if you have other reuqirements, just need to add more check and different templates if (agendaEvent.subjectDesc != null) { return Normal; } else { return Unusual; } } } Xaml: <Page.Resources> <!--tempalte for normal value--> <DataTemplate x:Key="NormalItemTemplate" x:DataType="local:AgendaEvent"> <RelativePanel> <TextBlock x:Name="eventTitle" TextWrapping="Wrap" MaxWidth="500" Margin="12,6,0,0"> <Run Text="{x:Bind authorName}"/> <Run Text=" - wrote: "/> <Run Text="{x:Bind subjectDesc}"/> </TextBlock> <TextBlock RelativePanel.RightOf="eventTitle" x:Name="eventType" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind evtCode}" Margin="12,6,0,0" /> </RelativePanel> </DataTemplate> <!--template for null value--> <DataTemplate x:Key="UnusualItemTemplate" x:DataType="local:AgendaEvent"> <RelativePanel> <TextBlock x:Name="eventTitle" TextWrapping="Wrap" MaxWidth="500" Margin="12,6,0,0"> <Run Text="{x:Bind authorName}"/> </TextBlock> <TextBlock RelativePanel.RightOf="eventTitle" x:Name="eventType" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind evtCode}" Margin="12,6,0,0" /> </RelativePanel> </DataTemplate> <local:MyDataTemplateSelector x:Key="MyDataTemplateSelector" Normal="{StaticResource NormalItemTemplate}" Unusual="{StaticResource UnusualItemTemplate}"/> </Page.Resources> <Grid> <ListView x:Name="ListViewAgendaEvents" SelectionMode="Single" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemTemplateSelector="{StaticResource MyDataTemplateSelector}" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> </ListView> </Grid> 更新: 您可以尝试创建自定义 ValueConverter 来完成这项工作。您可以检查 Converter 事件中的绑定值并自定义输出绑定字符串。 代码隐藏: public class TextBlockValueConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { if (value == null) { return ""; } else { return " - wrote: " + value.ToString(); } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } Xaml: <Page.Resources> <local:TextBlockValueConverter x:Key="TextBlockValueConverter"/> </Page.Resources> <TextBlock x:Name="eventTitle" TextWrapping="Wrap" MaxWidth="500" Margin="12,6,0,0"> <Run Text="{x:Bind authorName}"/> <Run Text="{x:Bind subjectDesc, Converter={StaticResource TextBlockValueConverter} }"/> </TextBlock> 老 对于 UWP 中的 ListView 中使用的 DataTemplate,是否有一种简单直接的方法来组合自定义字符串中的属性? 既然你用的是TextBlock,那么解决方法就很简单了。您只需要在 Run 中使用 TextBlock。并将你想要的文字绑定到不同的Run. 你只需要像这样更改代码: <TextBlock x:Name="eventTitle" TextWrapping="Wrap" MaxWidth="500" Margin="12,6,0,0"> <Run Text="{x:Bind authorName}"/> <Run Text=" - wrote: "/> <Run Text="{x:Bind subjectDesc}"/> </TextBlock> 结果看起来像: 根据 Roy Li 的回答,我使用了以下最适合我的需求并且部分类似于 Android 的适配器架构的方法: 这是一个单独的类,充当 xaml 列表视图项的“适配器”或“视图模型”。在构造函数中,它采用具有我要处理的属性的原始对象类型: public class AgendaEventAdapter { public AgendaEvent CurrentObject; public string Title { get { if (string.IsNullOrEmpty(CurrentObject.subjectDesc)) { return CurrentObject.authorName; } else { return CurrentObject.subjectDesc + " (" + CurrentObject.authorName + ")"; } } } public string EventType { get { return "[" + CurrentObject.evtCode + "]"; } } public string Notes => CurrentObject.notes; public AgendaEventAdapter(AgendaEvent ev) { CurrentObject = ev; } } 这是listview中使用的DataTemplate(注意DataType现在是适配器类AgendaEventAdapter): <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)" xmlns:converters="using:ClassevivaPCTO.Converters" xmlns:utils="using:ClassevivaPCTO.Utils" xmlns:adapters="using:ClassevivaPCTO.Adapters" x:Class="ClassevivaPCTO.Controls.DataTemplates.AgendaEventListViewDataTemplate" xmlns:muxc="using:Microsoft.UI.Xaml.Controls"> <converters:DateTimeToHourConverter x:Key="DateTimeToHourConverter" /> <DataTemplate x:Key="AgendaEventListViewDataTemplate" x:DataType="adapters:AgendaEventAdapter"> <RelativePanel> <TextBlock x:Name="titoloEvento" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind Title}" Style="{ThemeResource BaseTextBlockStyle}" Margin="6,6,0,0" /> <TextBlock RelativePanel.RightOf="titoloEvento" x:Name="tipoEvento" TextWrapping="Wrap" MaxWidth="500" Text="{x:Bind EventType}" Style="{ThemeResource BaseTextBlockStyle}" Margin="6,6,0,0" /> <TextBlock RelativePanel.Below="titoloEvento" x:Name="dataStart" Text="{x:Bind CurrentObject.evtDatetimeBegin, Converter={StaticResource DateTimeToHourConverter}}" FontStyle="Italic" Style="{ThemeResource BodyTextBlockStyle}" Margin="6,0,0,0" /> <TextBlock RelativePanel.RightOf="dataStart" RelativePanel.Below="titoloEvento" x:Name="placeholderData" Text="-" FontStyle="Italic" Style="{ThemeResource BodyTextBlockStyle}" Margin="6,0,6,0" /> <TextBlock RelativePanel.RightOf="placeholderData" RelativePanel.Below="titoloEvento" x:Name="dataEnd" Text="{x:Bind CurrentObject.evtDatetimeEnd, Converter={StaticResource DateTimeToHourConverter}}" FontStyle="Italic" Style="{ThemeResource BodyTextBlockStyle}" Margin="0,0,0,0" /> <TextBlock RelativePanel.Below="dataStart" x:Name="descriptionEvent" TextWrapping="Wrap" Text="{x:Bind CurrentObject.notes}" Style="{ThemeResource BodyTextBlockStyle}" Margin="6,6,0,6" /> </RelativePanel> </DataTemplate> </ResourceDictionary> 这是为每个项目创建适配器类实例的代码,然后将其传递给列表视图的ItemsSource属性: // Wrap each AgendaEvent object in an instance of AgendaEventAdapter and handle null case var eventAdapters = overviewResult.AgendaEvents ?.Select(evt => new AgendaEventAdapter(evt)) .ToList(); ListViewAgendaDate.ItemsSource = eventAdapters; 这是我的问题的最佳解决方案,因为拥有一个单独的模型类有助于减少代码中的混乱,并且在使用与项目视图绑定的可观察对象的情况下也很有用。

回答 2 投票 0

无法获取列表视图默认分隔符颜色

我想获取用于分隔列表视图中项目的颜色,这似乎是基于列表视图的颜色。 但是,如果我使用 Listview.SeparatorColor 它返回 [颜色:A=-1, R=-1, G=-1, B=-...

回答 0 投票 0

ListView 后台可见

我遇到了一个很容易解决的小问题,但我找不到任何解决方案。所有建议的主题都是关于自定义背景的...... 这是我的代码: HomeTest 类扩展

回答 2 投票 0

我怎样才能做到这一点,以便我可以从 android studio java 列表中的多个视图中选择文本

这就是我所拥有的: 我的应用程序 但这就是我想要的: 概念 我已经并且目前正在网上搜索教程和类似问题,但到目前为止没有运气。 这是我的代码: 公开课 MainActivity

回答 0 投票 0

Flutter - 如何获取列表视图构建器中特定项目的链接?

我正在创建一个产品列表页面。我已经在 Listview 构建器中创建了项目行。它作为选项卡工作。如果我单击另一个页面上的按钮,它会重定向到指定的项目页面。如何

回答 0 投票 0

如何根据列表的元素分配颜色

我想根据显示星期几的列表元素分配不同的颜色(来自 DB Supabase)。 我测试了随机的,这很好,但我想指定一个特定的合作伙伴......

回答 1 投票 0

C# ASP.NET,DataPager 在我第一次点击它时不改变页面

我有问题。 我写了这段代码: 我有问题 我写了这段代码: <asp:ListView ID="ListComment" runat="server"> <LayoutTemplate> <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder> </LayoutTemplate> <ItemTemplate> <div class="CommentArea" id='Comment<%#Eval("Id")%>'> <div class="UserDate"> <span class="font07em fontunderline"><b>Inviato da: </b></span><span class="font07em"><b><a href="#"><%#Eval("Autore") %></a></b></span><span class="font07em fontunderline"><b> alle <%#Eval("Orario", "{0:hh':'mm}") %></b></span> </div> <div class="LikeDontLike"> <span class="font07em"><b> <asp:LinkButton runat="server" ID="Like" CommandArgument='<%#Eval("Id")%>' OnClick="Mipiace_Click" >Like</asp:LinkButton>: <%#Eval("Mipiace") %> / <asp:LinkButton runat="server" ID="DontLike" CommandArgument='<%#Eval("Id")%>' OnClick="Nonmipiace_Click" >Don't Like</asp:LinkButton>: <%#Eval("Nonmipiace") %></b></span> </div> <div class="UserComment"> <span class="font07em"><%#Eval("Commento") %></span> </div> </div> </ItemTemplate> </asp:ListView> <asp:DataPager runat="server" ID="PageComment" PagedControlID="ListComment" PageSize="2"> <Fields> <asp:NumericPagerField /> </Fields> </asp:DataPager> 当我运行它并单击 DataPager 的页面时,它不会更改视图。如果我第二次点击,它会改变。 我已经尝试将 DataPager 放入 LayoutTemplate 中,但我总是遇到同样的问题。我该如何解决? 谢谢大家! 我想您正在使用 page_load 事件将您的列表视图绑定到您的数据源。 您需要添加一个新的处理列表视图的 PagePropertiesChanged 事件来重新绑定您的列表视图。最后,您的数据绑定代码将在 page_load 事件(不需要检查回发)和 listview_PagePropertiesChanged 事件中重复。 我也有同样的问题,了解到我在 Page_Load 事件上呈现的数据与列表视图上的呈现数据混淆。我的解决方案是为数据寻呼机添加一个 OnPreRender 事件并在那里呈现我的数据而不是在 Page_Load 上。 这是一个很好的例子:ASP.Net:DataPager Control 在分页方面总是落后一步 你需要添加 <asp:ListView ID="ListComment" runat="server" OnPagePropertiesChanging="Listcomment_PagePropertiesChanging"> 然后在代码隐藏 protected void Listcomment_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e) { this.ListComment.SetPageProperties(e.StartRowIndex, e.MaximumRows, false); // Rebind your ListComment }

回答 3 投票 0

如何在 QML 中同步滚动两个列表视图(重叠)?

我创建了两个列表视图一个在另一个之上(彼此重叠),我想同时滚动两个列表视图并同步。 谁能告诉我,我该怎么做? 提前致谢。

回答 0 投票 0

ListView Header 和 ItemTemplate 不能左对齐

ListViews Header 和 ItemTemplate 具有相同的列宽,但 * 列之后的标题右对齐: 标题(黄色 BG)显示列宽,* 70 15 & 70 * 对齐 ...

回答 1 投票 0

水平对齐项目 ListView.builder - Flutter

我有这个代码: 未来建设者( 未来:_data, 构建器:(上下文,AsyncSnapshot 快照){ 如果 (!snapshot.hasData) { 返回常量中心(子:CustomLoadingAnimation()); ...

回答 2 投票 0

使用 Flutter 模型和动态 api 响应

大家好,我是 flutter 的新手 我通过在线工具为我的历史生成了一个模型类

回答 0 投票 0

如何在android中的自定义对话框中添加单选列表?

我想在自定义对话框中添加一个选择列表我已经在不同类型中尝试过,但我的应用程序仅因空指针错误而崩溃。我发现它只能在 AlertDialog 中完成。

回答 3 投票 0

flutter:强制 listview.builder 填充所有可用空间

我试图强制 listview.builder 填充屏幕中的所有可用空间(使可滚动到所有可用空间) 我的代码: 柱子( 孩子们:[ 小工具...

回答 2 投票 0

用户界面没有正确更新

在此我制作了一个包含数据的列表并将其提供给listview.builder 我的问题是当我想用 _removeFromList 删除第二张地图时 它从列表中删除,但 listview.builder

回答 0 投票 0

在 ListView vb.net 中单击空白区域

单击列表视图上的空白区域并取消选择项目时,我需要执行特定功能(例如:禁用按钮): 如果我点击这个

回答 2 投票 0

Flutter IconButton onPressed 从不触发

因为我不知道 ListTiles 的存在,所以我从头开始实现了以下内容: 我的小部件结构如下所示: StudiesItemWidget(相当于widget的脚手架,包含以下三个)

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.