【问题标题】:Update ListView, ObservableCollection更新 ListView、ObservableCollection
【发布时间】:2015-07-23 13:05:19
【问题描述】:

我不知道是不是巧合,但是在使用更新 5 更新 Visual Studio 2013 后,我的列表视图不再更新。因为我不是任何 mvvm wpf 专家,请寻求帮助。

每次插入或拔出 USB 时都会更新应用程序列表 - 这是在后台工作程序和事件处理程序的帮助下发生的。

我的视图模型

public ObservableCollection<Devices> devicelist { get; protected set; }
void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
{
    fd.FindDevices();
    RefreshList();
}

void DeviceRemovedEvent(object sender, EventArrivedEventArgs e)
{
    fd.FindDevices();
    RefreshList();
}

public void RefreshList()
{
    devicelist = new ObservableCollection<Devices>();
    devicelist.Clear();

    foreach (var item in fd.devices)
    {
        devicelist.Add(item);
    }
}

所以,如果设备被插入或拔出,​​FindDevices 方法就会启动(这个循环只是询问每个设备的信息),最后我会得到包含所有信息的设备列表。我喜欢刷新列表。 “fd.devices”只有 WPF 不刷新的设备数量正确。 如果有人有任何问题,请询问。请帮我解决我的问题:)

【问题讨论】:

  • 当我启动应用程序时也很有趣 - public ViewModel(),ListView 更新通常也通过 fd.FindDevices 和 RefreshList()
  • 如何绑定数据查看?还有,devicelist.Clear();没有任何意义,因为您已经创建了一个新列表。
  • 对不起,Ugur,我刚刚玩的时候已经被删除了;)但仍然不起作用! :)
  • 好的,但是添加“devicelist.Add(item);”之后在做什么,应该有一些类似“fd.devices.ItemSource = devicelist”的代码或者我不知道,可以吗是一个绑定问题。如何将数据绑定到视图
  • 他必须绑定到devicelist 属性。向我们展示您的 ListView 的 XAML,以便我们了解您是如何绑定它的。

标签: c# wpf listview mvvm observablecollection


【解决方案1】:

您需要引发属性更改事件。这会影响到 UI 元素,基本上它会刷新它拥有的数据。

假设列表是从 UI 绑定到的?

如果您还没有基础视图模型类,可能值得一看:

【讨论】:

  • 由于他使用的是ObservableCollection,所以调用Add方法时不需要Property Changed事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 2016-10-03
  • 1970-01-01
  • 2014-01-15
  • 2021-11-15
相关资源
最近更新 更多