【发布时间】:2011-06-16 05:30:06
【问题描述】:
在 WPF 窗口上,我有一个简单的十进制值列表框,其中绑定了一个 ObservableCollection of Amounts,一个绑定到 Total 属性的标签,该属性显示 ListBox 下方的值的总和,以及一个 TextBox绑定到 selectedItem.Amount 属性的 ListBox 的右侧。
当我单击 ListBox 中的一个项目时,我希望能够在填充的文本框中编辑 selectedItem 的值,关闭 TextBox,并让 listBoxItem 更新其值,我希望总和在标签也是如此。
我了解元素到元素数据绑定的工作原理(即 ListBox 到 Textbox) 我无法弄清楚的是元素到对象的数据绑定(即 ListBox/ObservableCollection 到 Total 属性)
非常感谢!
这是我目前拥有的两个简单的类:
Public Class TransactionModel
Implements INotifyPropertyChanged
'Public Property Amount As Decimal
Private _amount As Decimal
Public Property Amount As Decimal
Get
Return _amount
End Get
Set(ByVal value As Decimal)
_amount = value
OnPropertyChanged(New PropertyChangedEventArgs("Amount"))
End Set
End Property
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)
If Not e Is Nothing Then
RaiseEvent PropertyChanged(Me, e)
End If
End Sub
结束类
公共类 ViewModel 实现 INotifyPropertyChanged
Private oc As ObservableCollection(Of TransactionModel)
Sub New()
oc = New ObservableCollection(Of TransactionModel)
oc.Add(New TransactionModel With {.Amount = 10.0})
oc.Add(New TransactionModel With {.Amount = 20.0})
oc.Add(New TransactionModel With {.Amount = 30.0})
oc.Add(New TransactionModel With {.Amount = 40.0})
End Sub
Public Function GetAmounts() As ObservableCollection(Of TransactionModel)
Return oc
End Function
Private _total As Decimal = 0.0
Public Property Total As Decimal
Get
For Each o In oc
_total += o.Amount
Next
Return _total
End Get
Set(ByVal value As Decimal)
_total = value
OnPropertyChanged(New PropertyChangedEventArgs("Total"))
End Set
End Property
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)
If Not e Is Nothing Then
RaiseEvent PropertyChanged(Me, e)
End If
End Sub
结束类
【问题讨论】:
标签: wpf binding observablecollection inotifypropertychanged