根据另一个属性的输入更新datagrid中的属性值

时间:2012-08-14 16:12:25

标签: wpf vb.net wpfdatagrid

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

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

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

1 个答案:

答案 0 :(得分:1)

ObservableCollection列出的元素类必须实现INotifyPropertyChanged。您必须在setter中引发PropertyChanged事件。然后,您可以在类中订阅此事件,并在回调中进行计算。我发现它比在每个setter中进行计算要简单一点,如果你想在更改对象的任何属性时更新UI,你需要实现INotifyPropertyChanged。