2011-06-27 23 views
0

書式付きテキストをリッチテキストボックスにデータバインドする必要があります。書式設定では、特定の書式で一連のランを作成し、それらを段落に追加してRichTextBoxのブロックプロパティに追加する必要があるようです。段落プロパティをBlocksにバインドしようとしましたが、それを許可していないようです。段落には、ランリストにバインドするアイテムソースがありません。 RichTextBoxウィジェットへのランのリストをデータバインドするにはどうすればいいですか?書式付きテキストを銀色のリッチテキストボックスに書式設定4

ありがとうございました

答えて

0

これは私が思いついた解決策です。カスタムの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); 

     } 
    } 
}