如果我将一个TextBox绑定到一个对象的属性(商品就是这个对象),如下所示:
Text="{Binding Path=Merchandise.Quantity,Mode=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被设置为my ViewModel,它包含(在其他属性中)声明的商品类型的属性。
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属性分配给我的商品对象。但这绝对不是很有效,这似乎违背了使用Path=SomeObject.Property进行绑定的目的。
有什么关于如何解决这个问题的提示吗?
谢谢,Rob。
发布于 2015-04-19 21:22:18
您需要在Merchandise
类的属性上引发PropertyChanged
事件。因此该类需要实现INotifyPropertyChanged
接口以及视图模型类。否则,UI不知道发生了什么变化。
https://stackoverflow.com/questions/13280000
复制相似问题