从Xaml绑定RichTextBox的文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Xaml绑定RichTextBox的文本相关的知识,希望对你有一定的参考价值。
如何从xaml绑定RichTextArea的文本
答案
没有内置的方法可以做到这一点。你可以像讨论here一样创建Text附加属性并绑定到它
另一答案
他们在这里得到了更简单的答案:
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>
另一答案
这不能做,你必须手动更新它。 Document不是DependencyProperty。
另一答案
应该能够在SL4 RC中发生。见What is the best substitute for FlowDocument in Silverlight?
以上是关于从Xaml绑定RichTextBox的文本的主要内容,如果未能解决你的问题,请参考以下文章
WPF RichTextBox滚动条自动滚动实例文本自动滚动实例
WPF问题,richtextbox控件能绑定到数据表中的一个字段吗?怎么做? listbox选中当前项的事件是啥呢?