当变量更改时收到通知

2024-02-27

有什么方法可以获取变量何时更改吗?如果是这样,我怎样才能实现这一目标?


“官方”的方法是INotifyPropertyChanged。例如。当控件绑定到的数据对象更新时,UI(Windows 窗体、WPF)使用它来自动刷新控件。

public class MyClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    ...
}

然后你可以实现这样的属性

private string _name;
public string Name
{
    get { return _name; }
    set {
        if (value != _name) {
            _name = value;
            OnPropertyChanged(nameof(Name));
        }
    }
}

你可以这样使用它:

var myObj = new MyClass();
myObj.PropertyChanged += MyObj_PropertyChanged;

myObj.Name = "new name";

// Clean up (e.g. in a `Dispose()` method)
myObj.PropertyChanged -= MyObj_PropertyChanged;

假设这个事件处理程序:

// Will be called whenever a property of `MyClass` is updated.
private void MyObj_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    // Example
    if (e.PropertyName == nameof(MyClass.Name)) {
        var myObj = (MyClass)sender;
        //TODO: do something.
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当变量更改时收到通知 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 对数据表中的筛选列求和

    我正在尝试对数据表中过滤列的结果求和 我查看了他们网站上提出的问题 人们已经成功使用这个方法 http datatables net forums discussion 2053 fnfootercallback sum column af
  • 如何比较 string.characterAtIndex 和字母?

    我使用 swift 我想做的是检查这一点 if string characterAtIndex i a 但我收到错误 如何转换这个 a 以便它可以与我循环的字符类型相同 Thanks 你需要转变你UniChar characterAtInd
  • PhoneGap/Cordova 以及最新版本的 Google Chrome 中没有“Access-Control-Allow-Origin”

    我工作于Sencha Touch Framework跨移动平台 我正在运行我的项目mac os x localhost 我试图通过请求获取服务器的响应Ext Ajax request 我收到一个典型错误CORS XMLHttpRequest
  • 在 C/C++ 中初始化大小未知的数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 C 中初始化数组 例如 void initArr int size C语言没有提供初始化数组的选项 如果他的大小不是一个常量值 并
  • 如何判断CSS是否已经加载?

    我如何断言页面的 CSS 已在 Watin 2 1 中成功加载并应用其样式 在做了一些研究并写下我的答案之后 我偶然发现这个链接 http www phpied com when is a stylesheet really loaded
  • iOS 5 中的离屏 UITextView 不可见/清晰文本

    我有一个从笔尖加载的离屏 UITextView 实例 当用户点击 评论 按钮时 该实例会移动到屏幕框架中 输入使用的任何文本都是不可见的 如果用户旋转设备 则会显示文本 我尝试过抛出 setNeedsDisplay 和 setNeedsLa
  • ffmpeg的UDP协议是什么?

    ffmpeg的UDP协议是什么 这是另一个例子question https stackoverflow com questions 12003014 pipe udp input to ffmpeg ffmpeg i udp localho
  • 我们可以检查一个指针以确保它是一个有效的地址吗?

    我的想法是打印它指向的对象 我认为一个有效的指针应该有一个有效的对象 如果我们尝试打印出对象 我们会验证指针是否有效 我对吗 我认为一个有效的指针应该有一个有效的对象 是的 这就是有效指针的定义 如果我们尝试打印出对象 我们会验证指针是否有
  • setInterval 不适用于 ajax 调用

    我对网络服务进行了 getJson 调用并且工作正常 现在我尝试每 10 秒发出一次请求 使用带有回调函数的 setInterval 来触发弹出警报 我无法让它发挥作用 这是代码 function ajxCall getJSON http
  • 如何停止和播放jquery脚本

    我在用着slidesjs http www slidesjs com 在单页网站上创建 5 个不同的幻灯片 画廊 它们都有 slides 类并有自己的 ID 在调用播放函数之前 我不希望播放任何幻灯片 我已经能够使用以下方法成功阻止每个幻灯
  • 何时方便使用 Executors.newSingleThreadExecutor() 的示例

    请有人告诉我一个现实生活中的例子 在哪里使用这个工厂方法比其他方法更方便 新的单线程执行器 公共静态 ExecutorService newSingleThreadExecutor 创建一个执行器 它使用单个工作线程来操作 无界队列 但请注
  • Json.net 上的反序列化更改属性类型和名称

    使用 json net 当我反序列化 json 字符串时 我需要将 json 列表映射到另一个字段并转换类型 为了清楚起见 我有这个类 它是生成的代码 我无法更改它 Serializable public partial class Nbg
  • 无法解析:com.google.firebase:firebase-bom:31.0.0

    我正在使用 Android Studio Dolphin 2021 3 1 Patch 2 Gradle 7 5 1 Android Gradle 插件版本 7 3 1 Build Tools 33 0 0 SDK 32 当前稳定的 Gra
  • 如何在Django中获取所有GET请求值?

    如何在 Django 中获取所有这些 url 参数 1 12 18 5 生日快乐 https domain method 1 12 18 5 Happy birthday 我努力了 parameter request GET get 1 但
  • 当用户单击按钮时如何打开新窗口?

    当用户单击按钮 仍需要创建 时 我将如何创建一个新窗口 我删除了一些代码以使其更短 我需要创建一个按钮 当他们点击该按钮时 会打开一个新窗口 我尚未创建该按钮 因为该按钮必须链接到新窗口 请帮忙 My imports class App d
  • JavaScript 中检查变量是数字还是字符串

    有谁知道如何在 JavaScript 中检查变量是数字还是字符串 如果您正在处理文字符号 而不是构造函数 则可以使用typeof https developer mozilla org en Core JavaScript 1 5 Refe
  • 创建与 azure 资源管理器的服务连接时出错:azure pipelines

    使用托管标识的 Azure 资源管理器 当尝试添加服务连接时 因此我可以使用另一个 azure 云应用程序服务通过管道进行部署 我在尝试时收到此错误 Service connection field creationMode is not
  • 函数返回类型的类型限定符

    给出以下 C 源代码 const int foo void return 42 gcc编译没有错误 但有 Wextra or Wignored qualifiers 出现以下警告 warning type qualifiers ignore
  • 如何在 EL JSF 中使用方括号

    我见过有人在 JSF 中使用方括号 我不确定我是否正确理解它的用法 所以也许 JSF 大师可以帮助我理解它 1 假设我有这个 bean x x是一个二维数组 x 如何显示x 0 使用EL 我想在这种情况下我需要使用方括号 我想我用 bean
  • 当变量更改时收到通知

    有什么方法可以获取变量何时更改吗 如果是这样 我怎样才能实现这一目标 官方 的方法是INotifyPropertyChanged 例如 当控件绑定到的数据对象更新时 UI Windows 窗体 WPF 使用它来自动刷新控件 public c