【问题标题】:WP7 - Databinding + Italics + Wordwrap issueWP7 - 数据绑定 + 斜体 + 自动换行问题
【发布时间】:2011-04-12 06:50:38
【问题描述】:

这就是我想要做的。我似乎无法找到解决方案:

  • 我有 2 个来自 web 服务的字符串数据源,我想在前端将它们组合成一个用逗号分隔的句子。
  • 我想要正常字体的第一部分,我想要斜体的第二部分
  • 我也想让句子自动换行
  • 我正在使用 MVVM,所以我想了解如何将这些字符串数据源绑定到文本块...

我希望能够处理的案例:

正常:
前任。这是句子第 1 部分,这是句子第 2 部分

没有第二部分,所以没有逗号
前任。这是句子第 1 部分,我仍然希望它能够
自动换行

第二部分换行
前任。这是句子第 1 部分,这是句子
第 2 部分换行

还有

  • 第二部分仅带自动换行
  • 第一部分自动换行,然后是第二部分

似乎没有简单的解决方案。 我能想到的是有一个 PropertyChangedEventHandler 当这些字符串从网络服务器返回时通知我,然后在代码隐藏中格式化字符串...

【问题讨论】:

  • 我认为您可以在<textblock> 中使用<run> 来实现此目的?

标签: silverlight data-binding windows-phone-7


【解决方案1】:

为了达到您尝试使用斜体格式实现连续自动换行的效果,只能通过在TextBlock 中使用<Run> 元素来实现。但是,您无法绑定 Run 元素的内容,因此您需要在代码中创建它。

假设您从 Web 服务获得两个单独的响应(它们不会从一次调用中返回),那么您不能依赖哪个会先到达,所以我会使用事件聚合来通知视图收到所有必要数据后的视图模型。 PRISM library for WP7 包含一个可用于实现该效果的实现(请注意,WP7 的 PRISM 比它的 WPF 或 Silverlight 对应物轻得多)。

为了响应该事件,您的视图可以从视图模型中提取属性,创建TextBlock 及其组件Run 元素,然后进行相应更新。事实上,当您使用 PRISM 订阅事件时,您可以指定该事件的处理程序在 UI 线程上运行,这无疑会有所帮助。

【讨论】:

  • 这可能有点矫枉过正,但这里有一个绑定 Runs 的解决方案 - stackoverflow.com/questions/5253622/…
  • 我认为我的答案已经足够长了,没有进入可绑定的 Runs :P 但你是对的,如果你真的想要绑定 Run 是可能的。
  • 是的,谢谢你的信息!猜猜没有简单的好解决方案。
猜你喜欢
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多