从Xaml绑定RichTextBox的文本

时间:2010-03-02 06:12:34

标签: c# silverlight silverlight-4.0 richtextbox

如何从xaml

绑定RichTextArea的文本

6 个答案:

答案 0 :(得分:25)

他们在这里得到了更简单的答案:

Silverlight 4 RichTextBox Bind Data using DataContext 它就像一个魅力。

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

答案 1 :(得分:4)

这是我提出的解决方案。我创建了一个自定义的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);

        }
    }
}

答案 2 :(得分:3)

没有内置的方法可以做到这一点。您可以像讨论here

一样创建Text附加属性并绑定到它

答案 3 :(得分:2)

如果要在内联类型控件中绑定XAML控件,可以使用InlineUIContainer

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

答案 4 :(得分:0)

这不能做,你必须手动更新它。文档不是DependencyProperty。

答案 5 :(得分:0)