Silverlight 4 RichTextBox使用DataContext绑定数据

Silverlight 4 RichTextBox使用DataContext绑定数据,silverlight,silverlight-4.0,richtextbox,Silverlight,Silverlight 4.0,Richtextbox,我正在使用Silverlight 4并尝试将我的测试应用程序设置为多语言,但当我到达“RichTextBox”控件时遇到了一些问题。我可以通过执行反向代码(c#)来正确绑定它,但是当尝试使用“DataContext”属性时,我根本无法加载它 我创建了一个FormatConverter,它返回一个块(段落)进行测试,我的RichTextBox代码如下所示: <RichTextBox x:Name="rtaTest" BorderThickness="0" IsReadOnly="Tru

我正在使用Silverlight 4并尝试将我的测试应用程序设置为多语言,但当我到达“RichTextBox”控件时遇到了一些问题。我可以通过执行反向代码(c#)来正确绑定它,但是当尝试使用“DataContext”属性时,我根本无法加载它

我创建了一个FormatConverter,它返回一个块(段落)进行测试,我的RichTextBox代码如下所示:

   <RichTextBox x:Name="rtaTest" BorderThickness="0" IsReadOnly="True" UseLayoutRounding="True" 
DataContext="{Binding Source={StaticResource Localization}, Path=Home.MainContent, Converter={StaticResource ParagraphFormatConverter}}">
    </RichTextBox>


我想知道是否有一种方法可以从XAML绑定RichTextBox。

我想您可能对DataContext的用法有点困惑。例如,您可能有一些富文本,其中一个或多个
InlineUIContainer
元素的一些子元素可以从某个对象的属性检索其文本。您可以将对象分配给
DataContext

虽然我不太确定您希望实现什么,但我怀疑您真正需要的是转换器实际返回
块集合
(即使它只包含您最初返回的单个
),然后绑定为:-

<RichTextArea x:Name="rtaTest" BorderThickness="0" IsReadOnly="True"
 UseLayoutRounding="True"
 Blocks="{Binding Source={StaticResource Localization},
   Path=Home.MainContent, Converter={StaticResource ParagraphFormatConverter}}" />

无法设置块,只能获取它们。为
RichTextArea
设置块的一种方法是

public static void UpdateRichTextArea(RichTextArea area, string xmlText)
{
    if (area == null)
    return;

    area.Blocks.FillFromXml(xmlText, true);
}

这个FillFromXml是WPF的东西吗?在Silverlight中看不到它。

Run似乎支持SL4中的数据绑定,如:

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


我不太明白您的目标是分配给DataContextIt是因为我想在我的富文本区域中放置不同的本地化(法语/英语/等等),但我想在加载页面时绑定我的块。对不起,如果我不清楚。。。我的英语不是我的第一语言。太棒了,你让我开心了;)