ObservableCollection PropertyChanged 事件

2023-12-26

我想子类化ObservableCollection向其添加属性。不幸的是,PropertyChanged事件受到保护。基本上,我想将其子类化以具有SelectedItem我可以绑定到我的 MVVM WPF 应用程序中的列表。

这是我的班级的框架:

public class SelectableList<T> : ObservableCollection<T>
{
    public T SelectedItem {get;set;}
}

但我不能执行以下操作:

SelectableList<int> intList = new SelectableList<int>();
intList.PropertyChanged += new PropertyChangedEventHandler(intList_Changed);

因为访问限制。这让我提出了一个更深层次的问题。 UI是如何通知的PropertyChanged事件(例如计数属性)?请注意,我无法在代码隐藏中执行此操作。

我的头很晕,有人可以帮我解惑吗?


SelectableList<int> intList = new SelectableList<int>();
((INotifyPropertyChanged)intList).PropertyChanged += 
    new PropertyChangedEventHandler(intList_Changed);

可观察集合显式实现 INotifyPropertyChanged http://msdn.microsoft.com/en-us/library/aa288461%28v=vs.71%29.aspx,这意味着您必须先将实例强​​制转换为接口,然后才能访问接口的方法、属性和事件。至于为什么要这样做,我不知道。这绑定标记扩展 http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspxn 不“知道”ObservableCollections 或任何其他类型。它检查类型以查看它们是否实现或扩展特定的接口/基类(INPC、INCC、DependencyObject 等),因此不关心接口是否显式实现。

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

ObservableCollection PropertyChanged 事件 的相关文章

随机推荐

  • TDD:在重构代码的同时破坏所有现有的测试用例

    我已经开始在我的项目中遵循 TDD 但自从我开始 即使读了一些文章 我也很困惑 因为发展速度变慢了 每当我重构代码时 我都需要更改之前编写的现有测试用例 否则它们将开始失败 下面是我最近重构的一个类的例子 public class Sala
  • 如何使用 Javascript 进行替换和追加

    我有一个评论系统 我想在其中实现内联编辑 当有人知道一个好的插件或类似的东西时 请毫不犹豫地给我一个名字 并找到一个 Javascript 片段 它将文本替换为文本区域和文本作为该文本区域的值 但现在我需要向该文本区域添加一个按钮 提交按钮
  • Azure 应用服务 - 同步期间日期时间更改

    我正在开发一个使用 Xamarin Forms 和 Azure 应用服务 包括离线同步 的应用程序 在客户端有这样一段代码 appointment StartDate System DateTime Now 假设约会 开始日期是现在2017
  • 找到点击的li号

    我有一个标准清单 ul li a href blah 1 a li li a href blah 2 a li li a href blah 3 a li li a href blah 4 a li ul 还有我的 jQuery ul li
  • 如何加载和解析 SVG 文档

    背景 有许多与读取和解析 SVG 路径相关的未解答问题 用Java读取svg路径数据的最简单方法 https stackoverflow com questions 21973777 回复 使用 batik svg 解析器解析 svg 文件
  • chrome.notifications.update 无法按预期工作

    我有一些进度通知 我只想更新它 但它从 0 到 1 然后保持在 1 这是我的代码 var notifId uuidv4 var i 0 var notifOptions type progress iconUrl img GS icon p
  • 如何使用 AngularJS 动态创建 CSS 类

    我有一个 Angular JS 网站 我在其中使用来自 API 的数据 我想用它来动态创建 CSS 类 然后 该 CSS 类将格式化来自 API 的其他数据 并显示在 Angular JS 页面中 例如 有没有一种方法可以让 Angular
  • 如何在 Angular 中实现 Facebook 像素?

    我需要在一个有角度的项目中实现一个 facebook 像素 我的像素中有index html from src index html
  • 为什么要给 If 语句命名?

    我刚刚发现我可以为 For 和 While 语句命名 我知道如果您想中断或继续特定循环 它很有用 但我为什么要给 If 起个名字呢 看起来没什么用 name if true do something 这样编译没有问题 如果你有一个带有名称的
  • 如果我不提及目标分辨率,除了 @media 之外还有什么其他方法可以使网站做出适当的响应? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何制作一个网站 及其所有元素响应以适应不同的屏幕尺寸 字体 图像等 我做了这样的事情 media only screen a
  • 将 PEM 编码的 RSA 私钥转换为 AsymmetryKeyParameter

    我正在尝试 但失败 创建一种构造方法AsymmetricKeyParameter来自 PEM 编码的私钥 我怎样才能完成这个方法 好像是旧版本的BouncyCastle had a pemReader ReadObject 其结果可以被转换
  • 增加可变输入迭代器是否会使旧迭代器值失效?

    进一步满足输出迭代器要求的迭代器称为可变迭代器 不可变迭代器被称为常量迭代器 24 2 1 4 这表明您可以拥有一个可变输入迭代器 它满足输入和输出迭代器的要求 递增输入迭代器后 其旧值的副本不需要取消引用 24 2 3 然而 标准并没有对
  • 如何在多屏幕环境中知道 JFrame 是否在屏幕上

    我的应用程序用于多屏幕环境 应用程序在关闭时存储其位置并从最后一个位置开始 我通过致电获得该职位frame getLocation 如果框架位于主屏幕上或位于主屏幕的右侧 这会给我一个正值 位于主屏幕左侧屏幕上的框架的 X 值为负值 当屏幕
  • Java 枚举报错?

    当我尝试为枚举赋值时 出现以下错误 枚举状态中的构造函数状态不能应用于给定类型 状态 打开 0 为什么会发生这种情况以及如何解决它 到目前为止 这是我的代码 public enum Status STATUS OPEN 0 STATUS S
  • 如何使用外键测试 Django 中的模型

    我想确保我正在单独测试模型 对象 而不是作为一个庞大的系统 如果我有一个订单对象 并且它具有客户 付款 订单项等的外键 并且我想测试订单功能 则需要为所有相关数据创建固定装置 或在代码中创建它 我认为我真正需要做的是模拟其他项目 但如果我对
  • 如何使用公共 swagger-generator docker 镜像生成客户端?

    我们有一个完全 Docker 化的 Web 应用程序 其中包含有效的 API Swagger 定义 该 API 在其自己的 docker 容器中运行 我们使用 docker compose 来编排一切 我想根据位于以下位置的 Swagger
  • 如何将变量与文本块绑定

    我想知道如何将文本块绑定到 C 类中的变量 基本上我的 cs 文件中有一个 cart 变量 在该 Cart 类中 我可以访问不同的总计 以下是我用于绑定的内容 但它似乎没有绑定到变量
  • TfidfVectorizer 如何计算测试数据的分数

    在 scikit learn 中TfidfVectorizer允许我们拟合训练数据 然后使用相同的向量化器来转换我们的测试数据 对训练数据进行转换的输出是一个矩阵 表示给定文档的每个单词的 tf idf 分数 然而 拟合向量化器如何计算新输
  • 如何在 Microsoft SQL Server Analysis Services 中使用 MySQL 作为数据源?

    我已经安装了最新的 net 连接器 http www mysql com downloads connector net 我可以添加 MySQL 数据库作为数据源 我什至可以浏览 Business Intelligence Studio 中
  • ObservableCollection PropertyChanged 事件

    我想子类化ObservableCollection向其添加属性 不幸的是 PropertyChanged事件受到保护 基本上 我想将其子类化以具有SelectedItem我可以绑定到我的 MVVM WPF 应用程序中的列表 这是我的班级的框