2012-11-07 39 views
0

如果我結合一個TextBox到一個對象的(商品是對象)屬性,如:Silverlight 5 INotify OnPropertyChanged沒有觸發?

文本=「{綁定路徑= Merchandise.Quantity,模式=雙向}

<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設置到我的視圖模型包含(其它性質)型商品的申報財產。

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綁定的目的。

有關如何解決此問題的任何提示?

謝謝,羅布。

+0

請在ViewModel中顯示Merchandise屬性並使用代碼格式:) – LueTm

+0

使用代碼塊更新原始帖子。我希望有一個簡單的方法來處理與PropertyChanged通知綁定路徑= Object.Property。正確的輸入文本存儲在Merchandise.Quantity中,但PropertyChanged事件不會被觸發。 –

+1

休...你確定你有正確的datacontext?如果你在二傳手中製造一個斷點? – LueTm

回答

0

您需要針對您的Merchandise課程的屬性舉辦PropertyChanged活動。所以這個類需要實現INotifyPropertyChanged接口以及你的視圖模型類。否則,用戶界面不知道有什麼改變。