我正在基於MVVM模式的WPF應用程序。WPF MVVM - 綁定僅適用於初始值
我有一個RichTextBox,像這樣:
<RichTextBox Name="HtmlRichTextBox">
<FlowDocument>
<Paragraph>
Some Test
</Paragraph>
</FlowDocument>
</RichTextBox>
和一個TextBox:
<TextBox Text="{Binding ElementName=HtmlRichTextBox, Converter={StaticResource ResourceKey=RichTextBoxContentConverter}, Mode=OneWay}"/>
眼尖你們中間會注意到,我使用的是ValueConverter到的內容轉換將RichTextBox插入到綁定到TextBox的Text屬性的文本中。對於ValueConverter的代碼是在這裏:
<ValueConversion(GetType(RichTextBox), GetType(String))> _
Public Class RichTextBoxContentConverter : Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
Dim returnValue As String = String.Empty
If TryCast(value, RichTextBox) IsNot Nothing Then
Dim rtb As RichTextBox = CType(value, RichTextBox)
Dim rtbTextRange As New TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd)
If Not rtbTextRange.IsEmpty Then returnValue = rtbTextRange.Text
End If
Return returnValue
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class
的問題是,文本框的文本屬性設置正確,第一次加載時查看,但隨後的RichTextBox的內容進行任何更改不會更新文本框。
如果我使用一個簡單的例子,我將一個TextBox的Text屬性綁定到另一個工作正常,這表明它可能是ValueConverter,它是問題的原因。我假設沿線的某個地方我沒有通知源項目變更的目標,但我無法弄清楚我出錯的地方。
非常感謝您的幫助。
感謝肯特和菲利普指出我的錯誤(現在看起來很明顯!)。我不是100%滿意地手動更新綁定,但由於時間壓力,這是我現在要做的,所以謝謝。 –