В окне WPF у меня есть простой список десятичных значений, к которому привязан ObservableCollection of Amounts, метка привязана к свойству Total, которая показывает сумму значений под ListBox, и TextBox ксправа от ListBox, привязанного к свойству selectedItem.Amount.
Когда я щелкаю по элементу в ListBox, я хочу иметь возможность редактировать значение selectedItem в заполняемом текстовом поле, открывать вкладку TextBox ипусть listBoxItem обновит свое значение, и я хочу, чтобы сумма также обновлялась в метке.
Я понимаю, как работает привязка данных от элемента к элементу (т. Е. ListBox to 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
Конечный класс