web-dev-qa-db-ja.com

XamlからRichTextBoxのテキストをバインドします

XamlからRichTextAreaのテキストをバインドする方法

19
user281947

それを行うための組み込みの方法はありません。テキスト添付プロパティを作成し、説明したようにバインドできます ここ

3
Arsen Mkrtchyan

彼らはここでより簡単な答えを持っています:

Silverlight 4 RichTextBox Bind Data using DataContext そしてそれは魅力のように機能します。

<RichTextBox>
  <Paragraph>
    <Run Text="{Binding Path=LineFormatted}" />
  </Paragraph>
</RichTextBox>
26
m1m1k

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

        }
    }
}
4
e-rock

インライン型コントロール内でXAMLコントロールをバインドする場合は、 InlineUIContainer クラスを使用できます。

<RichTextBlock>
<Paragraph>
    <InlineUIContainer>
        <TextBlock Text="{Binding Name"} />
    </InlineUIContainer>
</Paragraph>
</RichTextBlock>
2
Kevin Tan

SL4RCで発生する可能性があります。 SilverlightのFlowDocumentの最良の代替品は何ですか? を参照してください。

0
Todd Main

これはできません。手動で更新する必要があります。ドキュメントはDependencyPropertyではありません。

0
Ana Betts