Silverlight 4 RichTextBox使用DataContext绑定数据

时间:2010-02-15 17:07:36

标签: silverlight silverlight-4.0 richtextbox

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

我创建了一个FormatConverter,它返回一个用于测试的Block(段落)和我的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。

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

虽然我不太确定你期望实现什么,但我怀疑你真正需要的是你的转换器实际返回BlocksCollection(即使它只包含单Block你原来是返回)然后绑定为: -

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

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