如果我将 TextBox 绑定到对象的(商品是对象)属性,例如:
Text="{绑定路径=商品数量,模式=TwoWay}
<TextBox x:Name="QuantityTextBox" Grid.Column="1" Grid.Row="5" Width="70" Text="{Binding Path=Merchandise.Quantity, Mode=TwoWay, TargetNullValue='0', FallbackValue='0', ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"/>
DataContext 设置为我的 ViewModel,其中包含(以及其他属性)类型 Merchandise 的声明属性。
Implements INotifyPropertyChanged, IDataErrorInfo
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)
If PropertyChangedEvent IsNot Nothing Then
RaiseEvent PropertyChanged(Me, e)
Select Case e.PropertyName
Case "Merchandise"
DoSomething()
Case Else
End Select
End If
End Sub
Private _Merchandise As DC.SL.Services.WebServiceMerchandise.Merchandise
Public Property Merchandise() As DC.SL.Services.WebServiceMerchandise.Merchandise
Get
Return _Merchandise
End Get
Set(ByVal value As DC.SL.Services.WebServiceMerchandise.Merchandise)
_Merchandise = value
OnPropertyChanged(New PropertyChangedEventArgs("Merchandise"))
End Set
End Property
当我在 TextBox 中输入更改时,不会触发 PropertyChanged 事件。我可以解决这个问题的唯一方法是在我的 ViewModel 中创建重复的属性...即 Quantity,然后当单击 Ok 按钮时,我将 ViewModel 属性分配给我的 Merchandise 对象。但这绝对不是有效的,似乎违背了能够使用 Path=SomeObject.Property 进行绑定的目的。
关于如何解决这个问题的任何提示?
谢谢,罗伯。