使用 INotifyPropertyChanged 更新 ObservableCollection 项属性

2023-11-29

检查以确保我的假设是正确的。

我有一个 ObservableCollection 类。我正在调用 Web 服务并检索一系列设备。然后,我枚举 ObservableCollection 并将每个项目设置为从 Web 服务检索到的相应设备。我检索的设备具有与 ObservableCollection 中的项目不同的属性值,但 PropertyChanged 事件未触发。

我假设这是 ByDesign,为了触发 PropertyChanged 事件,我实际上必须枚举每个属性并设置值?

例如,在下面的情况下,任何 Device 类属性都不会触发 PropertyChanged 事件。

ObservableCollection<Device> Items = new ObservableCollection<Device>();
Items = LoadItems();

List<Device> devices = GetDevices();

foreach (var item in Items)
{
    var currentDevice = devices.Single(d1 => d1.ID == item.ID);
    item = currentDevice;
}

但是,如果我手动更新每个属性,我就可以进行业务:

ObservableCollection<Device> Items = new ObservableCollection<Device>();
Items = LoadItems();

List<Device> devices = GetDevices();

foreach (var item in Items)
{
    var currentDevice = devices.Single(d1 => d1.ID == item.ID);
    item.Latitude = currentDevice.Latitude;
    item.Longitude= currentDevice.Longitude;
}

在上面的例子中,Latitude 和 Longitude 都会触发它们的事件。

由于我的类有很多属性,有没有比逐个属性更好的方法呢?


在第一个示例中,设置集合中的项目将触发 CollectionChanged 事件,而不是单个项目的 PropertyChanged 事件。

您可以通过向 PropertyChanged 事件指定空字符串来通知所有属性。例如:

item.RaisePropertyChanged("");

where 提高财产变化是调用 INotifyPropertyChanged 实现的 PropertyChanged 事件的公共方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 INotifyPropertyChanged 更新 ObservableCollection 项属性 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 如何通过TabBars调用Activity

    我正在制作一个使用选项卡栏的应用程序 现在我需要知道的是 如何通过打开其他选项卡setOnTabChangedListener 在我的代码中 例如 我当前位于选项卡中 当我单击第二个选项卡时 它应该调用第二个选项卡的活动 看下面的代码 Ta
  • 从安全性中删除时间戳元素

    所有的极客都会说 WSE 已经过时了 现在对我来说没关系 只是想找到解决我问题的方法 尝试使用 WSE 使用 Java Web 服务 在传出的soap请求中有一个安全有附加时间戳的节点 我的待发肥皂请求如下所示
  • 动态使用时,波形符不会转换为绝对路径

    我想动态创建 3 张卡片 每张卡都有一个图像 我想为每张卡动态设置路径 但我不能使用波形符 因为波浪号不会转换为绝对路径 img 我收到此错误 GET http localhost 3000 assets images how to use
  • 按给定索引对多维数组进行排序 - PHP?

    我有两个数组 days order and mysql result 我要排序 mysql result数组使用 days order大批 我想以天数升序显示 MySQL 结果 有什么办法可以做到这一点或任何其他方式 以便我可以通过 day
  • 让 phantomjs、socket.io 和 gevent-socketio 协同工作

    我正在尝试构建一个利用 Phantomjs 1 7 模拟浏览器 的应用程序 并创建一个 Python 后端来启动一些事件并收集数据 问题是 Phantomjs 和我的 Python 程序这两个进程需要双向通信 问题是里面page evalu
  • jQuery 沿正弦波制作动画

    我为此花了几天时间 然后放弃了 我试图让一个对象沿着正弦波无限地产生动画 它不应该在第一个周期之后结束 主要问题 循环在大约 1 1 3 Pi 而不仅仅是 Pi 处结束 这个额外的动作破坏了动画 我被困在这里 http jsfiddle n
  • 本地化的 JSF 默认验证器

    有什么方法可以轻松本地化 JSF 2 0 中的默认验证器消息吗 我知道关键是 我 例如 javax faces component UIInput REQUIRED 但从我发现的所有内容来看 更改它们的唯一方法是在消息包中 并且它不像资源包
  • 使用 sed/bash 删除左右方括号

    我有一个包含该角色的文件 Contributor 即贡献者和大括号在一起 我需要使用下面的代码删除它 find type f exec sed i s Contributor g 任何想法如何我可以结合 find 和 sed 来实现这一点
  • Scala 中的应用解析器示例

    这是我以前的版本的新版本question 我们可以将解析器定义为type Parser A String gt List A String 解析器接受输入字符串并生成一系列对 每对由解析结果和输入的未消耗部分组成 更多内容请参见此artic
  • Angular2 中的路径参数

    在对 Web 服务进行 RESTful 调用时 我们如何处理 Angular 2 中的路径参数 我找到了URLSearchParams查询参数的对象 但从我发现的情况来看 我们似乎必须对路径本身进行字符串连接 喜欢 let url api
  • 二分法(数值分析)

    在找到每个根之前需要进行多少次递归 另外 哪些是根 这是我的代码 e 0 000001 f1 x 14 x exp x 2 12 exp x 2 7 x 3 20 x 2 26 x 12 a 0 c 3 while abs c a gt e
  • ASP.NET Core:不允许同步操作。改为调用 WriteAsync 或将 AllowSynchronousIO 设置为 true

    ASP NET核心服务器 AllowSynchronousIO被设定为false new WebHostBuilder UseKestrel options gt options AllowSynchronousIO false 在acti
  • 在logstash中使用表的id作为sql_last_value?

    我的目录中有一个 MySQL 语句jdbc插件logstash input statement gt SELECT from TEST where id gt sql last value 我的桌子没有date or datetime领域本
  • 子类化 UIAlertView

    我正在尝试子类化 UIAlertView 以更好地处理我的应用程序中的错误状态 我遇到的问题是其他按钮标题nil 终止参数 当我创建子类时 它只选取列表中的第一个字符串 而不是所有字符串 ErrorAlertView displayErro
  • 使用 c:out JSP 将撇号转义为 \'

    我有一个包含人姓氏的对象字段 如果我使用 person lastName I get O Brian 如果我使用
  • jQuery 删除除了锚点之外的所有 HTML 标签

    目前 我有这一行 this html this html replace x3C x2F x3E x3E gi 但是 我想要一些类似于 if 子句 的内容 IF this tag
  • REST for Microsoft Access(或从应用程序访问的其他方式)

    我在PC上有一个Access数据库 想编写一个小应用程序 可以对这个数据库中的数据进行CRUD 我会编写一个提供此功能的简单 C 服务 但我不想重写现有的内容 是否有 Windows 服务或工具可以为 Microsoft Access 数据
  • 如何将 NSData 字节转换为 NSNumber 或 NSInteger?

    有一个特别的NSString initWithData抓取位并将其转换为字符串的方法 但是 我还没有发现NSNumber类参考号目前 我正在从服务器获取原始数据 字节 NSData格式 我知道如何在 C 中使用memcpy and int指
  • 检查异步 JavaScript 文件何时加载[重复]

    这个问题在这里已经有答案了 我想仅在加载所有异步文件后 引导 我的页面 有没有办法可以在加载异步文件时通知我 索引 html 为您的其中一个脚本提供一个 ID
  • 使用 INotifyPropertyChanged 更新 ObservableCollection 项属性

    检查以确保我的假设是正确的 我有一个 ObservableCollection 类 我正在调用 Web 服务并检索一系列设备 然后 我枚举 ObservableCollection 并将每个项目设置为从 Web 服务检索到的相应设备 我检索