如何让ObservableObject派生类的修改自动同步到WPF界面?
解决WPF中ObservableObject代码修改值界面不更新的问题
问题核心在于你定义的ValAngleDegrees是普通自动属性——虽然继承了ObservableObject,但并没有在属性值变更时触发PropertyChanged通知事件。因此通过代码修改属性值时,UI无法感知到数据变化,自然不会同步更新。
正确的处理方式是使用CommunityToolkit.Mvvm提供的SetProperty方法实现属性的setter,确保值变化时自动向UI发送更新通知:
public class MyParameters: ObservableObject { // many other values are here private double _valAngleDegrees; public double ValAngleDegrees { get => _valAngleDegrees; set => SetProperty(ref _valAngleDegrees, value); } }
SetProperty方法会自动对比新旧值,只有当值确实发生变化时,才会更新字段并触发PropertyChanged事件,保证UI与数据状态同步。如果ViewModel中有大量类似属性,也可以借助Visual Studio的代码生成工具快速生成符合要求的属性结构。
内容的提问来源于stack exchange,提问作者Ivan P.
相关产品推荐
相关产品推荐

