0

如果我将 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 进行绑定的目的。

关于如何解决这个问题的任何提示?

谢谢,罗伯。

4

1 回答 1

0

你需要在你的类PropertyChanged的属性上引发一个事件。Merchandise因此该类需要实现INotifyPropertyChanged接口以及您的视图模型类。否则,UI 不知道有任何变化。

于 2015-04-19T13:22:17.600 回答