0

我有一个绑定到数据网格的可观察集合。在数据网格行上,当我编辑一个属性的值时,我需要该行上的另一个属性来根据计算更新它的值。这样做的最佳方法是什么。我尝试创建一个 collectionchanged 方法,如下所示:

   Public WithEvents Tickets As ObservableCollection(Of Ticket)

Public Sub Tickets_CollectionChanged(ByVal sender As Object, ByVal e As NotifyCollectionChangedEventArgs) Handles TicketCollection.CollectionChanged
    CalculatedVariable = determineCalculation()
End Sub

但是,它仅在添加或删除新项目时调用,而不是在编辑行中的属性时调用。我查看的另一种方法是在每个属性的设置器中调用计算方法,但知道我需要调用该方法并更新我需要它的几个不同属性的属性,这似乎很混乱。有没有一种简单有效的方法可以完成我想做的事情?感谢您的任何反馈:)

 public property MyVariable
 Get 
     return _MyVariable
 Set(value)
     _MyVariable = value
     CalculatedVariable = determineCalculation()
     RaisePropertyChange("MyVariable") , ect..
 EndProperty
4

1 回答 1

1

ObservableCollection 列出的元素的类必须实现 INotifyPropertyChanged。您必须在您的设置器中引发 PropertyChanged 事件。然后你可以在你的类中订阅这个事件并在回调中进行计算。我发现它比在每个 setter 中进行计算要干净一些,无论如何,如果您希望在更改对象的任何属性时更新 UI,则需要实现 INotifyPropertyChanged。

于 2012-08-14T16:23:02.890 回答