【问题标题】:Silverlight 4 RichTextBox Bind Data using DataContextSilverlight 4 RichTextBox 使用 DataContext 绑定数据
【发布时间】:2010-02-15 17:07:35
【问题描述】:

我正在使用 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
  • 这是因为我想在富文本区域中放入不同的本地化(法语/英语/等),但我想在加载页面时绑定我的块。对不起,如果我不清楚......我的英语不是我的第一语言。

标签: silverlight silverlight-4.0 richtextbox


【解决方案1】:

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

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

【讨论】:

  • 太棒了,你成就了我的一天;)
【解决方案2】:

我想你可能对 DataContext 的使用有点困惑。例如,您可能有一些富文本,其中一个或多个 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}}" />

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      public static void UpdateRichTextArea(RichTextArea area, string xmlText)
      {
          if (area == null)
          return;
      
          area.Blocks.FillFromXml(xmlText, true);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-11-28
        • 2011-09-14
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        相关资源
        最近更新 更多