Silverlight4Beta4发布了,大量的新特性让我们这些sl fans兴奋不已。接下来的日子里我会根据一些官方资料为大家介绍sl4Beta中的新玩意。

在Silverlight4中新加入的RichTextArea控件允许通过更多的途径显示富文本。我们可以将其看做WPF中富文本支持的轻量级版本。

新的System.Windows.Documents命名空间包含以下类

  • Paragraph
  • Hyperlink
  • Inline
  • InlineUIContainer
  • LineBreak
  • Run
  • Span

我们可以通过使用这些类在RichTextArea中显示富文本。

RichTextArea控件的Blocks属性(其为Content类型)是一系列Block(现在主要是Paragraph )的集合。

Paragraph类是一系列Inlines的集合,这些Inline可以是Span, InlineUIContainer, Run, LineBreak, Hyperlink 等等。

这就意味着我们可以将上面所列的元素结合起来在通过RichTextArea显示富文本内容:

<UserControlx:Class="SilverlightApplication27.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"d:DesignHeight="300"d:DesignWidth="400"><Gridx:Name="LayoutRoot"Background="White"><RichTextAreaTextWrapping="Wrap"IsReadOnly="False"><Paragraph>The quick brown fox jumped over the lazy dog</Paragraph><ParagraphTextDecorations="Underline"FontSize="24"TextAlignment="Right"FontFamily="Courier New">The quick brown fox jumped over the lazy dog</Paragraph><Paragraph>The quick brown fox jumped over the lazy dog<LineBreak />The quick brown fox jumped over the lazy dog<LineBreak /><Italic>The quick brown fox jumped over the lazy dog</Italic></Paragraph><Paragraph>The quick brown fox jumped over the lazy dog<InlineUIContainer><RectangleMargin="2"Fill="Red"Width="48"Height="12" /></InlineUIContainer> with a red rectangle</Paragraph><Paragraph><HyperlinkNavigateUri="http://www.microsoft.com"TargetName="">Go to Microsoft.com</Hyperlink></Paragraph><Paragraph><RunText="The quick brown " /><Run >fox jumped over the lazy dog</Run></Paragraph><Paragraph><Span FontSize="24"><Run>The quick brown fox jumped over the lazy dog</Run><Run>The quick brown fox jumped over the lazy dog</Run></Span></Paragraph></RichTextArea></Grid>
</UserControl>

上面的代码中给出了Paragraph, Span, Run, Hyperlink, InlineUIContainer的示例,其中最强大的是InlineUIContainer,它允许我们将任何UI元素放入文档。

运行截图如下:

并且它不是只读的,我们可以在运行时任意修改其内容:

我们甚至可以删除那个红色的矩形。而且它还支持撤销、重做操作。

当然,所有的这些XAML标记的元素也都可以使用编程的方式创建和控制,从而实现绑定,动画等等。

我们也可以将Silverlight中的其他元素放到InlineUIContainer中,比如我在下面的代码中放入一个Button:

<UserControlx:Class="SilverlightApplication27.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"d:DesignHeight="300"d:DesignWidth="400"><Gridx:Name="LayoutRoot"Background="White"><RichTextAreaTextWrapping="Wrap"IsReadOnly="False"><Paragraph>This is some text and then there's a piece of UI<LineBreak /><InlineUIContainer><ButtonContent="Click Me" Click="Button_Click"/></InlineUIContainer><LineBreak />and then there's some more text and some space for more still;<LineBreak /><Runx:Name="runToModify" /></Paragraph></RichTextArea></Grid>
</UserControl>

由于RichTextArea处于可编辑(IsReadOnly="False")状态下,所以这里的Button的IsEnabled为False。下面我将RichTextArea的IsReadOnly改为True

<RichTextAreaTextWrapping="Wrap"IsReadOnly="True">

这样我们的Button就可用了,我们再为其添加一个点击事件:

public partial class MainPage : UserControl {public MainPage() {InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e) {runToModify.Text = "dynamically added some more text";}
}

嘿嘿,结果符合预期:

RichTextArea提供了很多事件,比如TextInputEvent, TextInputStartEvent, TextInputUpdateEvent等,它还有一个很有用的Selection属性。

OK,have fun with silverlight!

Silverlight4Beta之RichTextArea相关推荐

  1. Silverlight4Beta之CompositeTransform

    Silverlight中的Transform相信大家已经很熟悉了,它们有ScaleTransform, SkewTransform, RotateTransform和TranslateTransfor ...

  2. Silverlight4Beta之与剪切板通信

    我在之前的文章<Silverlight4Beta之鼠标右键支持>中提到sl4终于支持鼠标右键了.虽然未提供上下文菜单控件,但是想来实现也并不难.而上下文菜单最普遍的操作便是复制/粘贴/剪切 ...

  3. 风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)

    微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...

  4. Silverlight 4正式版发布

    微软发布Silverlight 4正式版,Silverlight官方已经更新Silverlight 4开发包. Silverlight 4仅支持在Visual Studio 2010下开发,所以,首先 ...

  5. WPF对决Silverlight:为项目选择最佳技术

    在何时使用WPF,何时使用Silverlight的问题上,很多人备感困惑.为项目选择正确的技术取决于应用程序的需求,以及WPF和Silverlight能力的不同之处. Silverlight最初称为W ...

  6. Silverlight 4 Beta正式发布

    今天上午在洛杉矶举行的Professional Developer's Conference,微软正式发布了Silverlight 4 Beta.该版本属于开发人员使用版本,终端用户暂时不能下载Sil ...

  7. vaadin 10+_Vaadin 10+作为CUBA UI的未来

    vaadin 10+ 从一开始,Vaadin就成为CUBA平台用户界面的基石和重要组成部分. 凭借其创新的方法,它帮助CUBA将企业用户界面开发带到了一个非常有希望(当今是默认)的WEB领域. Vaa ...

  8. Vaadin 10+作为CUBA UI的未来

    从一开始,Vaadin就成为CUBA平台用户界面的基石和重要组成部分. 由于其创新的方法,它帮助CUBA将企业用户界面开发带到了一个非常有希望的(如今是默认)的WEB领域. Vaadin最令人兴奋的部 ...

  9. “WPF” VS “Silverlight”

    特性 WPF Silverlight 文件访问 无限制 可访问用户文件夹:我的文档.我的照片.我的视频等 打印 具有很多选项,可访问打印对话框.打印队列等 需编程打印UI元素 文档编辑 支持流文档和固 ...

最新文章

  1. go语言笔记——还是大爱的我的python,开发效果高,tornado的性能也很不错
  2. mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园
  3. [Swift]LeetCode382. 链表随机节点 | Linked List Random Node
  4. 【React】设计高质量的React组件
  5. LAMP+Varnish缓存详解(一)——Varnish简介
  6. js和jQuery的总结
  7. 软件工程各种UML总结
  8. Mac中如何卸载pkg包
  9. 关注小升初 | 中考分数线刷屏的背后是数千东昌家长学生的泪水
  10. k开头的英文单词计算机专业,K开头英语单词一览
  11. 软件中的质量属性(二)
  12. miui编译第三方卡米 对应的修改步骤位置
  13. 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列
  14. 百度下拉词用python怎么抓取
  15. signature=cfd49330e04062ab770d7ddb4cfcf23a,Przed pierwszym rozbiorem Polski
  16. myeclipse2017下载安装与破解详细教程
  17. mysql5.7 密钥_mysql5.7密码登录的那些坑
  18. 正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... 失败:拒绝连接。
  19. netstat 命令用法详解
  20. (四)Substance Painter贴图制作软件的使用

热门文章

  1. 国产化网管软件的开发与应用
  2. 【论文研读】-DiPETrans: A Framework for Distributed Parallel Execution of Transactions of Blocks in BLC
  3. vscode编写代码时怎么不使用左右方向箭头来移动光标
  4. Collection转List
  5. 入职前的背景调查是查什么?求职者应该怎么应对?
  6. 数字集成电路:电路系统与设计
  7. 艺人全接触----周星驰
  8. 抖音电商魏雯雯:深耕全域兴趣电商 丰富用户美好生活
  9. 体会可变个数的形参:(jdk5.0之后新添加的知识点)
  10. 我的互联网运营学习之旅:会当凌绝顶,一览众山小