PropertyChanged事件需要每次单击激发一次

本文关键字:一次 单击 事件 PropertyChanged | 更新日期: 2023-09-27 17:59:41

我遇到了一个场景,我认为我的系统开始遇到扩展问题,我认为这是由于没有以"正确的方式"进行

本质上,我有一个Silverlight项目,在这个特定的领域,我的模型有很多依赖

    int _Weight;
    public int Weight
    {
        get { return _Weight; }
        set
        {
            if (value != _Weight)
            {
                _Weight = value;
                RaisePropertyChanged("Weight");
            }
        }
    }

然后,在该模型的外部,我的应用程序还将一个额外的事件链接到propertyChanged事件上,如下所示

myObject.PropertyChanged += UpdateUI;

我的UpdateUI做了很多图形处理,生成了绑定无法满足的图像。

而且效果很好。

但现在假设我的Weight属性也对其他属性有影响,这些属性也会触发PropertyChanged事件(因为它们应该这样做,所以绑定到这些属性的所有ui字段都会更新),但它也会导致每次都触发UpdateUI。

这意味着,如果一个属性也影响了其他3个属性,那么UpdateUI将在最后一个属性之后真正需要触发时触发4次。

它并没有破坏任何东西,只是感觉效率低下,架构不正确。

所以本质上,我想问的是,我如何才能让我的UpdateUI在每一系列属性更改中只触发一次

感谢

PropertyChanged事件需要每次单击激发一次

由于不了解您的体系结构,我有两个ide。

  1. 这是我的选择,但需要更多的努力-设计您的UpdateUI方法,使其可以根据更改的属性进行更新,而不是在数百个ViewModels中的一个属性更改时简单地刷新整个UI。例如,如果PersonViewModel的年龄发生了更改,则只更新该年龄
  2. 每隔几秒钟执行一次挂起的布局更新。例如,您可以启动某种计时器,它将检查是否有挂起的布局更新(您必须自己构建)并执行它们,或者最后一个,这取决于您。这可能是有效的,但必须仔细设计

我不熟悉Silverlight,只熟悉WPF,但我想同样的原则也适用。