尝试了解 INotifyPropertyChanged

2023-12-07

几个(新手)问题:

1)我看到很多

public Person SelectedPerson { get; set; } 

我假设这不会引发财产变更?

那么,如果我想这样做,我必须提供以下内容吗?

    private Person selectedPerson;
    public Person SelectedPerson
    {
        get
        {
            return this.selectedPerson;
        }
        set
        {
            if ((this.selectedPerson != value))
            {
                this.selectedPerson = value;
                base.OnPropertyChanged("SelectedPerson");
                // Note: Using ViewModelBase

            }
        }
    }

2)如果我有以下情况:

    public bool CanDeletePerson
    {
        get
        {
            return SelectedPerson != null;
        }
    }

以及 XAML 中

< Button IsEnabled="{Binding CanDeletePerson}" 
Command="{Binding DeletePersonCommand}"> Delete </ Button >

如何让它重新评估 CanDeletePerson 属性?基本上,它最初是禁用的,但是当我单击网格并将行移动到行时,SelectedPerson 正在更新,但 CanDeletePerson 没有获取更新的值,那么我如何让它真正再次检查该值?

3)我明白了

...取决于是否有任何内容订阅了该事件

您如何订阅该活动?


  1. 正确 - 不会触发
  2. 是的,要有CanDeletePerson重新评估后,您可以在以下日期提出 PropertyChangedCanDeletePerson,像这样

        set
        { 
            if ((this.selectedPerson != value))
            { 
                this.selectedPerson = value; 
                base.OnPropertyChanged("SelectedPerson"); 
                base.OnPropertyChanged("CanDeletePerson");
            }
        }
    
  3. 与任何普通事件一样,但如果您使用 WPF,通常不需要显式订阅

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

尝试了解 INotifyPropertyChanged 的相关文章

  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum

随机推荐

  • 使用 JavaFX 将渐变应用于球体对象

    我正在 JavaFX 中工作 我正在尝试将渐变应用于球体 但是 显然 我不知道该怎么做 我被困住了 因为我知道球体是一个对象 所以它需要有一种材质 但是 就颜色而言 PhongMaterial 只采用一种颜色 所以它不会采用渐变 因为渐变是
  • pyQt Matplotlib 小部件实时数据更新

    使用 pyQt 4 8 5 在 Python 2 7 中编写 如何在 pyQt 中实时更新 Matplotlib 小部件 目前 我正在对数据进行采样 现在是 random gauss 附加此数据并进行绘图 您可以看到我每次都会清除该数字并为
  • 将具有多个键的字典按一个键求和的最有效方法是什么?

    我有以下字典结构 product1 product tmpl id product id qty product uom qty price price unit subtotal price subtotal total price to
  • 在appdomain中加载静态类

    我在 C AppDomain 中遇到了一个大问题 我需要在 dll 文件中加载静态类并执行其方法 当我尝试通过以下方式加载它们时 Assembly LoadFrom XXXXX XXXXX is the full path of dll d
  • Laravel 递归关系

    我正在做一个项目Laravel 我有一个可以有父母或可以有孩子的帐户模型 所以我的模型设置如下 public function immediateChildAccounts return this gt hasMany Account ac
  • 仅对特定像素着色

    我有一个代表大脑图像的矩阵 每个 i j 位置的值都在 0 和 1 之间 我正在应用颜色图 以便那些值为 1 的像素为红色 0 为黄色 介于两者之间的像素得到中介值 现在 我想要的是那些值高于 0 8 的像素根据颜色图获得颜色 其余的变得透
  • 在另一个程序集中找到 Razor Pages

    我想在另一个程序集中找到 我的项目 Razor 页面 为此 我编写以下代码 public void ConfigureServices IServiceCollection services var adminAssembly Assemb
  • 应该避免 query_posts() 吗?

    我正在读那个query posts 应避免有利于wp query and pre get posts 我对弄乱循环没有信心 也不完全理解法典 下面的代码是否使用query posts 如果是的话 从那时起query posts 应该避免 你
  • 如何将一组变量放置在 gcc 的特定部分中,arm 是否有类似 #pragma default_variable_attributes 的内容

    下面的链接https www iar com support tech notes linker how do i place a group of functions or variables in a specific section
  • Web Worker 中的传感器读取

    看来我们无法在网络工作者中获取传感器数据 我想知道其背后的原因 用例是我正在考虑在工作线程中获取地理位置数据 并且仅将处理后的版本发送到主线程 对于 GPS 这post说工作线程不支持它 没有给出原因 我仔细检查了一下 网络工作人员不支持
  • SWT Tree - 可以降低本机展开图标吗?

    我有一个JFaceTreeViewer与 SWTTree底层 我正在绘制我的单元格 为自己提供多行支撑 目前 它看起来像这样 我希望展开图标和标签都像这样降低 这对于标签来说没有问题 因为我从StyledCellLabelProvider并
  • 根据日期检查创建新列

    我在 Scala 中有两个数据框 df1 ID Field1 1 AAA 2 BBB 4 CCC and df2 PK start date time 1 2016 10 11 11 55 23 2 2016 10 12 12 25 00
  • getSupportActionBar() 在 Android 应用程序中返回 Null

    我正在尝试在 Android Studio 中使用选项卡执行操作 但是getSupportActionBar 总是返回 null 我只想要一个带有 3 个选项卡的简单操作栏 我可以在其中单击 但操作栏或选项卡都没有出现 这是我的代码 imp
  • ios pjsip - 在 sip 通话期间播放声音

    当我进行 sip 呼叫时 有时我想发送 dtmf 数字 为此 我创建了一个自定义拨号盘 当按下某个键时 该拨号盘应播放该键的声音 但在 sip 呼叫期间不会播放该声音 当没有呼叫时 会播放声音 这些声音是通过以下函数播放的AudioTool
  • 使用 simpleDateFormat java 解析日期

    我想将字符串解析为日期 但获得的日期不正确 我的代码是这样的 SimpleDateFormat df new SimpleDateFormat dd MMM yy hh mm ss S a date1 df parse 17 DEC 19
  • ' aria-label='pip install 生成警告: 'NewConnectionError(''> pip install 生成警告: 'NewConnectionError('

    我花了很多时间搜索是否有人已经遇到了同样的问题 但我没有找到任何东西 一段时间以来 每次我想用 pip 安装软件包时都会收到警告 安装最终成功 但需要更多时间 该警告包含重复 5 次相同的 WARNING WARNING Retrying
  • 如何使 exe 运行而不需要同一目录中的所有 dll 文件?

    因此 如果可能的话 我尝试将所有 DLL 文件合并到我的 exe 中 这样我就可以运行 exe 而不需要同一目录中的 DLL 文件 我试着四处寻找其他人问同样的问题 但没有真正找到任何有用的东西或任何我个人可以遵循的东西 先谢谢您的帮助 选
  • Android Honeycomb:Fragment无法启动AsyncTask?

    我遇到过这个错误以前 但认为这是严格模式系统的一些错误 然而 这显然是正确的 因为我现在悲伤地发现 我的程序由一个活动和大量片段组成 我有一个 Network Worker 片段 它启动如下 URL 请求 public void start
  • Python Selenium ChromeDriver 错误消息:EGL_NOT_INITIALIZED [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我在 Windows 7 和 Python 3 6 上运行 ChromeDriver 2 34 522940 和 Selenium 3 8 0 我正在尝试这段代码 def f
  • 尝试了解 INotifyPropertyChanged

    几个 新手 问题 1 我看到很多 public Person SelectedPerson get set 我假设这不会引发财产变更 那么 如果我想这样做 我必须提供以下内容吗 private Person selectedPerson p