2010-02-15 91 views
2

我正在使用Silverlight 4并试图将我的测试应用程序多语言化,但当我到达“RichTextBox”控件时遇到了一些麻烦。我能够通过执行后台代码(c#)来正确绑定它,但是当尝试使用“DataContext”属性时,我根本无法加载它。Silverlight 4 RichTextBox使用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> 

我想知道是否有从绑定一个RichTextBox的方式XAML。

+0

我不太看到你的目标是分配到DataContext – AnthonyWJones 2010-02-16 14:19:11

+0

什么那是因为我希望把我的富文本区域不同的本地化(法语/英语/等),但我想要加载页面时绑定我的块。对不起,如果我不清楚...我的英语不是我的第一语言。 – Nordes 2010-03-10 11:08:30

回答

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}}" /> 
0

块不能设置,它们只能被提取。设置块为一种方式是

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

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

这FillFromXml是一个WPF的事情吗?不要在Silverlight中看到它。

5

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

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

令人惊叹,你让我的一天;) – 2013-05-30 10:49:20