2010-03-02 54 views

回答

3

有沒有內置的方法來做到這一點。您可以創建文本附加屬性,並像討論的那樣綁定到它here

+3

提供的鏈接是特定於WPF。 Silverlight中的RichTextBox沒有Document屬性。 – 2010-09-04 21:37:24

+0

我想第二個史蒂夫的評論。 – 2012-03-07 18:01:58

0

這不能完成,您必須手動更新它。文檔不是DependencyProperty。

3

這是我想出的解決方案。我創建了一個自定義的RichTextViewer類並從RichTextBox繼承。

using System.Windows.Documents; 
using System.Windows.Markup; 
using System.Windows.Media; 

namespace System.Windows.Controls 
{ 
    public class RichTextViewer : RichTextBox 
    { 
     public const string RichTextPropertyName = "RichText"; 

     public static readonly DependencyProperty RichTextProperty = 
      DependencyProperty.Register(RichTextPropertyName, 
             typeof (string), 
             typeof (RichTextBox), 
             new PropertyMetadata(
              new PropertyChangedCallback 
               (RichTextPropertyChanged))); 

     public RichTextViewer() 
     { 
      IsReadOnly = true; 
      Background = new SolidColorBrush {Opacity = 0}; 
      BorderThickness = new Thickness(0); 
     } 

     public string RichText 
     { 
      get { return (string) GetValue(RichTextProperty); } 
      set { SetValue(RichTextProperty, value); } 
     } 

     private static void RichTextPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) 
     { 
      ((RichTextBox) dependencyObject).Blocks.Add(
       XamlReader.Load((string) dependencyPropertyChangedEventArgs.NewValue) as Paragraph); 

     } 
    } 
} 
24

他們已經得到了這裏的答案更簡單:

Silverlight 4 RichTextBox Bind Data using DataContext 和它的作品就像一個魅力。

<RichTextBox> 
    <Paragraph> 
    <Run Text="{Binding Path=LineFormatted}" /> 
    </Paragraph> 
</RichTextBox> 
+2

這也適用於Windows 8/8.1 XAML。謝謝!! – dex3703 2014-01-30 21:10:04

+1

簡單而有效的解決方案,亮 – DNKROZ 2014-02-28 15:26:07

+4

作爲@ dex3703是說,這個作品在WPF的語法:' <的FlowDocument> <運行文本= 「{綁定路徑= MYTEXT}」/> ' – maxp 2015-03-18 09:51:51

1

可以使用InlineUIContainer類,如果要綁定一個內嵌的內部控制XAML輸入控制