XamlからRichTextAreaのテキストをバインドする方法
それを行うための組み込みの方法はありません。テキスト添付プロパティを作成し、説明したようにバインドできます ここ
彼らはここでより簡単な答えを持っています:
Silverlight 4 RichTextBox Bind Data using DataContext そしてそれは魅力のように機能します。
<RichTextBox>
<Paragraph>
<Run Text="{Binding Path=LineFormatted}" />
</Paragraph>
</RichTextBox>
これが私が思いついた解決策です。カスタム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);
}
}
}
インライン型コントロール内でXAMLコントロールをバインドする場合は、 InlineUIContainer
クラスを使用できます。
<RichTextBlock>
<Paragraph>
<InlineUIContainer>
<TextBlock Text="{Binding Name"} />
</InlineUIContainer>
</Paragraph>
</RichTextBlock>
SL4RCで発生する可能性があります。 SilverlightのFlowDocumentの最良の代替品は何ですか? を参照してください。
これはできません。手動で更新する必要があります。ドキュメントはDependencyPropertyではありません。