Tag: listview

UWP ObservableCollection排序和分组

在UWP应用程序中,如何对ObservableCollection进行分组和排序并保持所有实时通知的良好性? 在我看过的大多数简单的UWP示例中,通常有一个ViewModel公开一个ObservableCollection,然后绑定到View中的ListView。 在ObservableCollection中添加或删除项目时,ListView会通过对INotifyCollectionChanged通知作出反应来自动反映更改。 在未分类或未分组的ObservableCollection的情况下,这一切都正常,但如果需要对集合进行排序或分组,似乎没有明显的方法来保留更新通知。 更重要的是,动态更改排序或组顺序似乎会引发重大的实施问题。 ++ 假设您有一个现有的datacache后端,该后端公开了一个非常简单的类Contact的ObservableCollection。 public class Contact { public string FirstName { get; set; } public string LastName { get; set; } public string State { get; set; } } 此ObservableCollection随时间而变化,我们希望在视图中呈现实时分组和排序列表,以响应datacache中的更改进行更新。 我们还希望为用户提供在运行时切换LastName和State之间的分组的选项。 ++ 在WPF世界中,这是相对微不足道的。 我们可以创建一个简单的ViewModel,引用数据缓存,按原样显示缓存的Contacts集合。 public class WpfViewModel { public WpfViewModel() { _cache = GetCache(); } Cache _cache; public ObservableCollection Contacts { […]

什么是更好的使用:DataGrid或ListView用于显示大量数据?

我想在表格中显示> 50000行。 哪个是最好的控件:DataGrid或ListView(在详细信息视图中)? 哪些控件具有更好的性能?

使用数据绑定在多列ListView中检索MouseEnter上的单元格值

我想从MouseEnter事件的ListView的行中的Car Name列中检索值,并将结果显示在TextBlock 。 我怎样才能做到这一点? XAML CS public Car SelectedCar { get; set; } public MainWindow() { InitializeComponent(); List cars = new List(); int i = 0; string[] name = { “Sentra”, “IS”, “Camry”, “s2000” }; string[] make = { “Nissan”, “Lexus”, “Toyota”, “Honda” }; string[] year = { “2000”, “2011”, “2013”, “2004” }; foreach (string […]

在后台加载整个ListView并在每个ListItem中获取一个UIControl

我需要完全加载ListView并在每个ListItem中获取一个UIControl,即使项目视图没有显示在屏幕上也是如此。 我尝试了ChildViewAdded事件,但只有在屏幕上显示ListItem时才会引发它。 因此,在显示之前,我需要一种以编程方式准备UI ListView的方法。 在此先感谢您的帮助。

MvvmCross; 如何从另一个ViewModel RaisePropertyChange

我有一个ShoppingCart listView包含绑定到ShopingCartViewModel的项目 。 当我点击一个项目时,它会将我带到ItemInfoFragment ,它绑定到ItemInfoViewModel 。 在ItemInfoFragment中,我有一个按钮 ,用于删除 项目并将其从ShoppingCart 列表视图中 删除 。 我的问题是 ; 删除 项目 并按 后退按钮返回到我之前的 活动后 , ShoppingCart listView仍显示我删除的项目 。 我的问题是; 当我退出ItemInfoFragment时,如何在ShoppingCartViewModel中RaisePropertyChange?

在listview上绘画会禁用listview项目上的重绘

这是什么原因? 我重写OnPaintBackground并绘制一个字符串。 直到我在构造函数中调用它才会显示: this.SetStyle ( ControlStyles.UserPaint, true ); 但后来我没有在列表视图中看到这些项目。 为什么以及如何解决这个问题? 编辑:代码 protected override void OnPaintBackground ( PaintEventArgs pevent ) { base.OnPaintBackground ( pevent ); // Create string to draw. String drawString = “76”; // Create font and brush. Font drawFont = new Font ( “Arial”, 36 ); SolidBrush drawBrush = new SolidBrush ( Color.Blue ); […]

使用c#删除项目时自动计算列表视图中项目的总值

我使用listview作为购物车。 我需要知道在删除项目时如何重新计算购物车的总价值。 这是我添加到listview的代码; private void btnACart_Click(object sender, EventArgs e) { int value = 0; for (int i = 0; i < lvCart.Items.Count; i++) { value += int.Parse(lvCart.Items[i].SubItems[1].Text); } rtbTcost.Text = value.ToString(); } 这是我删除项目的代码: private void btnRemoveItem_Click(object sender, EventArgs e) { int total = 0; foreach (ListViewItem item in lvCart.Items) { if (lvCart.Items[0].Selected) { lvCart.Items.Remove(lvCart.SelectedItems[0]); total […]

将ModalPopupExtender TargetControlID设置为LIstView按钮

我想知道我如何能够将我的ModalPopupExtender的TargetControlID设置为ListView上的Button。 我尝试将TargetControlID设置为的按钮位于ListView上的Alternating和Item模板中。 所以我相信我需要将TargetControlID设置为两个按钮,或者有两个不同的ModalPopupExtenders 。 这是我的ModalPopupExtender : 这是我的listview的交替模板: .. .. .. 这将是ItemTemplate完全相同的设置。

单击第二次时ListViewItem的ArgumentOutOfRangeException

当我第二次单击时,下面的方法给出了ArgumentOutOfRangeException错误,并且说索引0不是有效索引。 在第一次点击它工作!? ListView FullRowSelect设置为true。 我看到按下ALT和CONTROL键时会发生这种情况。 如果我没有按下这些键就点击它没有错误,或者如果在点击第二次之前单击一个空行,它就不会给出错误。 有没有办法使用这些组合键并单击一次以上? private void MultipleToText(object sender, MouseEventArgs e) { if (li.SelectedItems.Count <0) return; int SetIndex = li.FocusedItem.Index; if (Control.ModifierKeys == (Keys.Alt|Keys.Control)) { ListViewItem lvi = li.SelectedItems[0]; // Error happens there DialogResult res = MessageBox.Show( lvi.SubItems[0].Text + " will be deleted. Continue ?", "", MessageBoxButtons.YesNo); if (res == DialogResult.No) return; li.Items.Remove(li.SelectedItems[0]); […]

ASP.NET Listview->单击Row->执行操作

我需要一些帮助以下内容。 我有一个列表视图,我填写代码隐藏: Linq-> SQL: ListView1.DataSource = from x in database.ITEMS select x; ListView1.DataBind(); 项目内容: ID 名称 数量 我只显示字段的名称: <asp:Label ID="nameLabel" runat="server" Text='’ /> 假设我在数据库中有25行,我用25行填充列表视图。 接下来是我需要帮助的。 用户需要单击25个名称中的一个(完整行)并重定向到显示该行内容的页面。 所以,假设有人点击“汽车”,他将被重定向,他会看到:你选择了汽车,汽车的ID为19,数量为6。 我已经浏览过互联网,但我无法找到我能理解的解决方案。 在列表视图和其他数据显示方法方面,我有点像菜鸟。 我的2个问题: 单击一行(而不是该行中的按钮或链接)时如何启动事件? 当我单击一行并开始一个事件时,如何检查哪一个被点击了? 我希望有人能够以一种用户友好的noob方式向我解释这是如何完成的,或者将我重定向到讨论我的问题的教程,以及用户友好的方式。 提前致谢。