Silverlight4Beta之RichTextArea
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相关推荐
- Silverlight4Beta之CompositeTransform
Silverlight中的Transform相信大家已经很熟悉了,它们有ScaleTransform, SkewTransform, RotateTransform和TranslateTransfor ...
- Silverlight4Beta之与剪切板通信
我在之前的文章<Silverlight4Beta之鼠标右键支持>中提到sl4终于支持鼠标右键了.虽然未提供上下文菜单控件,但是想来实现也并不难.而上下文菜单最普遍的操作便是复制/粘贴/剪切 ...
- 风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)
微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...
- Silverlight 4正式版发布
微软发布Silverlight 4正式版,Silverlight官方已经更新Silverlight 4开发包. Silverlight 4仅支持在Visual Studio 2010下开发,所以,首先 ...
- WPF对决Silverlight:为项目选择最佳技术
在何时使用WPF,何时使用Silverlight的问题上,很多人备感困惑.为项目选择正确的技术取决于应用程序的需求,以及WPF和Silverlight能力的不同之处. Silverlight最初称为W ...
- Silverlight 4 Beta正式发布
今天上午在洛杉矶举行的Professional Developer's Conference,微软正式发布了Silverlight 4 Beta.该版本属于开发人员使用版本,终端用户暂时不能下载Sil ...
- vaadin 10+_Vaadin 10+作为CUBA UI的未来
vaadin 10+ 从一开始,Vaadin就成为CUBA平台用户界面的基石和重要组成部分. 凭借其创新的方法,它帮助CUBA将企业用户界面开发带到了一个非常有希望(当今是默认)的WEB领域. Vaa ...
- Vaadin 10+作为CUBA UI的未来
从一开始,Vaadin就成为CUBA平台用户界面的基石和重要组成部分. 由于其创新的方法,它帮助CUBA将企业用户界面开发带到了一个非常有希望的(如今是默认)的WEB领域. Vaadin最令人兴奋的部 ...
- “WPF” VS “Silverlight”
特性 WPF Silverlight 文件访问 无限制 可访问用户文件夹:我的文档.我的照片.我的视频等 打印 具有很多选项,可访问打印对话框.打印队列等 需编程打印UI元素 文档编辑 支持流文档和固 ...
最新文章
- go语言笔记——还是大爱的我的python,开发效果高,tornado的性能也很不错
- mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园
- [Swift]LeetCode382. 链表随机节点 | Linked List Random Node
- 【React】设计高质量的React组件
- LAMP+Varnish缓存详解(一)——Varnish简介
- js和jQuery的总结
- 软件工程各种UML总结
- Mac中如何卸载pkg包
- 关注小升初 | 中考分数线刷屏的背后是数千东昌家长学生的泪水
- k开头的英文单词计算机专业,K开头英语单词一览
- 软件中的质量属性(二)
- miui编译第三方卡米 对应的修改步骤位置
- 第28章 	LTDC—液晶显示中英文—零死角玩转STM32-F429系列
- 百度下拉词用python怎么抓取
- signature=cfd49330e04062ab770d7ddb4cfcf23a,Przed pierwszym rozbiorem Polski
- myeclipse2017下载安装与破解详细教程
- mysql5.7 密钥_mysql5.7密码登录的那些坑
- 正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... 失败:拒绝连接。
- netstat 命令用法详解
- (四)Substance Painter贴图制作软件的使用