listview 相关问题

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

WinUI 3.0 AOT - 任何输入列表的 ListView ArgumentException

我正在使用 WinUI 3.0 和 Net 9.0,并尝试使用本机 AOT,但在使用 ListView 或 ItemsRepeater 时我总是收到 ArgumentException。 代码在没有 AOT 的情况下运行良好。 我正在使用 WinUI 3.0 和 Net 9.0,并尝试使用本机 AOT,但在使用 ListView 或 ItemsRepeater 时我总是收到 ArgumentException。 代码无需 AOT 即可正常工作。 <?xml version="1.0" encoding="utf-8"?> <UserControl x:Class="TestProject.UserControls.Home.AOTSourceTest" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:TestProject.UserControls.Home" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <UserControl.Resources> <DataTemplate x:Key="ItemTemplate" x:DataType="x:String"> <TextBlock Text="{x:Bind}" /> </DataTemplate> </UserControl.Resources> <Grid> <ListView Grid.Row="1" x:Name="Repeater" ItemTemplate="{StaticResource ItemTemplate}" > </ListView> </Grid> </UserControl> using Microsoft.UI.Xaml.Controls; using System; using System.Collections.Generic; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. namespace TestProject.UserControls.Home { public sealed partial class AOTSourceTest : UserControl { public AOTSourceTest() { this.InitializeComponent(); Repeater.Loaded += AOTSourceTest_Loaded; } private void AOTSourceTest_Loaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) { Repeater.ItemsSource = new List<string> { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; } } } <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net9.0-windows10.0.26100.0</TargetFramework> <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion> <RootNamespace>TestProject</RootNamespace> <ApplicationManifest>app.manifest</ApplicationManifest> <UseWinUI>true</UseWinUI> <EnableMsixTooling>true</EnableMsixTooling> <PublishAot>true</PublishAot> <DisableRuntimeMarshalling>false</DisableRuntimeMarshalling> <PublishTrimmed>false</PublishTrimmed> <EnablePreviewFeatures>true</EnablePreviewFeatures> </PropertyGroup> System.ArgumentException: Value does not fall within the expected range. at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|38_0(Int32 hr) at WinRT.ExceptionHelpers.ThrowExceptionForHR(Int32 hr) at ABI.Microsoft.UI.Xaml.Controls.IItemsControlMethods.set_ItemsSource(IObjectReference _obj, Object value) at Microsoft.UI.Xaml.Controls.ItemsControl.set_ItemsSource(Object value) at TestProject.UserControls.Home.AOTSourceTest.AOTSourceTest_Loaded(Object sender, RoutedEventArgs e) at WinRT._EventSource_global__Microsoft_UI_Xaml_RoutedEventHandler.EventState.<GetEventInvoke>b__1_0(Object sender, RoutedEventArgs e) at ABI.Microsoft.UI.Xaml.RoutedEventHandler.Do_Abi_Invoke(IntPtr thisPtr, IntPtr sender, IntPtr e) 我尝试使用 ItemsRepeater,但它也有一个 ArgumentException。 参数“源”不是受支持的向量。 尝试过ObservableList和字符串数组,但没有帮助。 在 .csproj 中至少有两种方法可以解决此问题(您可以使用其中之一或两者): 将此添加到 <PropertyGroup> XML 元素 <AllowUnsafeBlocks>true</AllowUnsafeBlocks> 将对 C#/WinRT 包(当前版本为 2.2.0)的显式包引用添加到 <ItemGroup> XML 元素 <PackageReference Include="Microsoft.Windows.CsWinRT" Version="2.2.0" /> 我不确定为什么你没有收到编译警告,因为 AOT 编译通常需要启用不安全的块。这可能是一个错误,看起来与此类似:https://github.com/microsoft/CsWinRT/issues/1891

回答 1 投票 0

在Android中的列表视图中获取重复行

我正在开发一个从Web服务填充数据的listView,我正在根据json中的Web服务所需的结果获取完整的结果,但是当我在listview中的适配器中设置它时,我得到了dup...

回答 1 投票 0

一些滚动后颤振ListView KeepAlive

我想让已经在 ListView 中呈现的小部件保持活动状态。我尝试使用 ListView 类提供的 addAutomaticKeepAlives:true 属性。 这是我的示例代码...

回答 5 投票 0

自定义 ListView 未在模拟器中显示 - 黑色活动

FI 我正在尝试使用 Car 类的自定义适配器来显示自定义 ListView。但是,当我在模拟器中运行该应用程序时,活动屏幕为黑色。我在 XML 布局中添加了一些静态文本...

回答 1 投票 0

我的 ListView 与我的编辑文本重叠

为什么我的列表视图与我的编辑文本框重叠我认为问题出在我的 XML 编码上 顺便说一句,我正在使用frameLayout,我希望我的listView位于我的edittext下方,我该怎么做? ...

回答 6 投票 0

如何使用 AdvancedCollectionView 源更新 UWP ListView 中的项目

我使用 Windows Community Toolkit 中的 AdvanceCollectionView 作为 XAML ListView 的源,以允许排序和过滤。我在更新 ListView 时遇到问题。 要复制的是...

回答 2 投票 0

如何删除 ListViewItem 上的选择边框

我使用 SetWindowTheme 和 SendMessage 使 .net 列表视图看起来像 vista 样式列表视图,但 .net 控件在所选项目周围仍然有一个点状选择边框: 所选项目...

回答 7 投票 0

C# ListView 如何以编程方式创建 ContextMenu

我背后有这个代码: 私有无效InitializeListView() { //RAZ lv.Items.Clear(); GridView gridView = new GridView(); gridView.AllowsColumnReorder = true; ...

回答 2 投票 0

我在 Flutter 中将新项目插入反向 ListView 的底部时遇到问题

我有这个简单的有状态小部件: 类 SomeListWidget 扩展 StatefulWidget { const SomeListWidget({super.key}); @覆盖 状态 createState() => _SomeListWidge...

回答 1 投票 0

表格中文本溢出问题

我正在尝试在表格中显示列表。但出现了文本溢出问题。如何用 css 解决这个问题,请指导我。 .pkg表{ 宽度:100%; 表格布局:固定; } .pkgtable th, td { ...

回答 1 投票 0

列表视图不显示 2024 年 1 月 1 日之前的事件

我使用挂钩创建了一个具有多个视图、自定义事件呈现和上下文菜单的日历。所有的工作都很好,除了一件事:当我切换列表视图时,日历只显示......

回答 1 投票 0

Flutter 渲染溢出 ListView Builder

我认为使用 ListView 构建器会出现渲染溢出问题。我确信 ListView 是问题所在。我已经考虑将 ListView 包装在 Expaneded 小部件中,因为它...

回答 1 投票 0

鼠标悬停时更改 ListViewItem 背景颜色

我需要一些帮助。我不明白为什么我找到的解决方案都不适合我的情况。让我们考虑一个包含这些项目的列表视图: ...

回答 3 投票 0

WinUI3 XAML ListView:批量插入和删除

我们正在设计一个桌面应用程序,它在某个时刻显示 10.000-100.000 个项目的列表。我们使用绑定到 ObserableCollection 的 ListView 问题是,您需要添加一些点或...

回答 1 投票 0

如何在listview中高效加载1000条数据

我有 1000 个客户需要从服务器加载到自定义列表视图中。但我需要更多时间来填充列表视图。我正在使用搜索选项来搜索客户,因此我需要加载和显示...

回答 2 投票 0

Flutter ListTile 文本从浅色切换到深色时不会更改主题/颜色

我的屏幕中有一个带有ListTile的ListView,我在materialApp中定义了两个主题,并根据themeBloc的状态更改themeMode,如下所示。 材料应用程序( 主题:AppTh...

回答 1 投票 0

iOS 15 中无法选择 SwiftUI 列表

我正在开发的应用程序中使用列表。我刚刚发现从列表中选择一个项目在 iOS 15 中不起作用。它在 iOS 16、17 和 18 中起作用。(我必须下载 iOS 16 模拟器...

回答 1 投票 0

在将 getcount 中的数组大小设置为数组大小 +1 之前,列表视图 Android0 中不会显示任何数据

我正在Android中使用列表视图,它有两个使用自定义适配器的部分。我正在从网络服务获取数据。 如果我将 getcount() 中的数组大小设置为 array.size(),它就可以工作...

回答 2 投票 0

如何在Android中实现具有层次结构的多级ExpandableListView:工厂→部门&科→行→设备

我正在开发一个Android项目,我需要使用ExpandableListView实现层次结构。目前,我已经实现了两级层次结构:工厂→设备。现在,我想要

回答 1 投票 0

具有最小约束的 NumberBox 的 ListView 在订购时会损坏值

考虑这个最小的例子; xml: 考虑这个最小的例子; xaml: <?xml version="1.0" encoding="utf-8" ?> <Window x:Class="NumberboxText.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="using:NumberboxText" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="NumberboxText" mc:Ignorable="d"> <StackPanel Orientation="Vertical"> <Button Click="Button_Click">Sort</Button> <ListView ItemsSource="{x:Bind Items}"> <ListView.ItemTemplate> <DataTemplate x:DataType="local:TestItem"> <NumberBox Value="{x:Bind Current, Mode=TwoWay}" Minimum="{x:Bind Min}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackPanel> </Window> cs: using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices.WindowsRuntime; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.Media.Capture.Frames; namespace NumberboxText; public class TestItem : INotifyPropertyChanged { private int _order; private int _min; private int _current; public event PropertyChangedEventHandler? PropertyChanged; public int Order { get => _order; set => SetProperty(ref _order, value); } public int Min { get => _min; set => SetProperty(ref _min, value); } public int Current { get => _current; set => SetProperty(ref _current, value); } protected void SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { field = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } public sealed partial class MainWindow : Window { public readonly ObservableCollection<TestItem> Items = []; public MainWindow() { this.InitializeComponent(); Items.Add(new TestItem { Order = 3, Min = 3, Current = 3 }); Items.Add(new TestItem { Order = 1, Min = 1, Current = 1 }); Items.Add(new TestItem { Order = 4, Min = 4, Current = 4 }); Items.Add(new TestItem { Order = 2, Min = 2, Current = 2 }); } private void Button_Click(object sender, RoutedEventArgs e) { for (var i = Items.Count - 1; i >= 0; i--) { for (var j = 1; j <= i; j++) { if (Items[j - 1].Order > Items[j].Order) { Items.Move(j - 1, j); } } } } } 当我单击排序按钮时,我得到了这个; 看起来列表视图试图就地更改数字框值,但由于Minimum约束而不能,导致值发生变化。 我是否应该认为这是一个需要报告的错误,或者有什么方法可以让这个工作成功? 您可以创建一个包装类,它接受项目本身和要排序的值。 public class ItemWrapper { public TestItem Item { get; set; } public int Value { get; set; } public ItemWrapper(TestItem item) { Item = item; Value = item.Order; // or any other property you want to track } } 然后用项目的包装类实例填充列表。 private void Button_Click(object sender, RoutedEventArgs e) { var wrappedItems = Items.Select(item => new ItemWrapper(item)).ToList(); 然后进行冒泡排序并清除原始项目列表并将列表添加到其中 for (var i = wrappedItems.Count - 1; i >= 0; i--) { for (var j = 1; j <= i; j++) { // Compare the Order property of the TestItem within the ItemWrapper if (wrappedItems[j - 1].Item.Order > wrappedItems[j].Item.Order) { // Swap the ItemWrapper objects var temp = wrappedItems[j - 1]; wrappedItems[j - 1] = wrappedItems[j]; wrappedItems[j] = temp; } } } Items.Clear(); // Add the sorted items back to the original collection foreach (var wrappedItem in wrappedItems) { Items.Add(wrappedItem.Item); } }

回答 1 投票 0

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