2

我正在使用 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 的方法。

4

4 回答 4

5

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

<RichTextBox>
  <Paragraph>
    <Run Text="{Binding Path=LineFormatted}" />
  </Paragraph>
</RichTextBox>
于 2010-09-09T04:31:39.687 回答
1

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

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

<RichTextArea x:Name="rtaTest" BorderThickness="0" IsReadOnly="True"
 UseLayoutRounding="True"
 Blocks="{Binding Source={StaticResource Localization},
   Path=Home.MainContent, Converter={StaticResource ParagraphFormatConverter}}" />
于 2010-02-16T14:22:54.597 回答
1

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

于 2010-05-26T14:43:38.907 回答
0

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

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

    area.Blocks.FillFromXml(xmlText, true);
}
于 2010-04-06T13:55:12.920 回答