Silverlight-TextBlock換行-LineBreak

2024-02-05 21:18

本文主要是介绍Silverlight-TextBlock換行-LineBreak,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TextBlock 設定文字時,也可以使用較直覺的內部文字格式,而不使用明確的 Text 屬性集,如以下範例:

Copy Code
<TextBlock>Hello, world!</TextBlock>
注意注意事項:

設定 Text 屬性時並不會保留前置或尾端空白字元,只會保留內部空白字元。 如需以 XAML 處理空白字元的詳細資訊,請參閱 XAML 概觀

使用 Run 和 LineBreak 物件

TextBlock 並不會呈現單一字串,它也可以呈現不同 Run 項目中所包含的一系列字串,其中每一個項目可以擁有不同的字元層級字型屬性。 LineBreak 物件表示 TextBlock 中的明確新行,而且通常用於周圍 Run 項目之間。LineBreakRun 共用一個基礎類別 (Inline),該類別能夠讓 TextBlock 保留其文字模型內容的強型別 InlineCollection。 該 InlineCollection 也是 TextBlock XAML 內容屬性,只要將多個 RunLineBreak 項目 (Element) 指定為 TextBlock 的子項目 (Element),即可指定 TextBlock 模型中的項目 (Item)。

下列 XAML 範例示範如何在 TextBlock 中,藉由使用 Run 物件定義數個不同格式的文字字串,以 LineBreak 分隔。

XAML
Copy Code
<!-- Display formatted text as Run objects within a TextBlock. -->
<Canvas>
<TextBlockFontFamily="Arial" Width="400" Text="Sample text formatting runs"><LineBreak/><Run Foreground="Maroon" FontFamily="Courier New" FontSize="24">Courier New 24</Run><LineBreak/><Run Foreground="Teal" FontFamily="Times New Roman" FontSize="18" FontStyle="Italic">Times New Roman Italic 18</Run><LineBreak/><Run Foreground="SteelBlue" FontFamily="Verdana" FontSize="14" FontWeight="Bold">Verdana Bold 14</Run>
</TextBlock>
</Canvas>

下圖顯示先前 XAML 內容範例所轉譯的格式化文字。

TextBlock rendering multiple Run objects

Cc189010.JOLT_run_in_xaml_01(zh-tw,VS.95).png

LineBreak 會強制每個 Run 中的文字換行,以顯示為獨立的一行。 如果沒有使用 LineBreak,每個 Run 中的文字就會連成一行,最後會因為超過 TextBlock 物件寬度或是 Silverlight 內容區域的寬度而遭到裁剪。 下圖顯示格式化文字在沒有使用 LineBreak 物件的情況下的呈現方式。

多個 Run 物件的 TextBlock 呈現方式:沒有 LineBreak 物件的情況下

Cc189010.JOLT_run_in_xaml_02(zh-tw,VS.95).png

以程式碼存取 TextBlock 文字模型

TextBlock 文字模型中實際包含兩種屬性:TextInlines。 並不建議您一定要變更 Text 的值,因為它會造成個別 Run 項目 (Item) 上的任一字型項目 (Element) 變得扁平,而且會移除 TextBlockLineBreak 項目 (Element),這個項目原本是以內嵌項目形式建構,而且並不單純的只是 Text。 如需詳細資訊,請參閱 Inlines

文字換行

TextWrapping 屬性 (Property) 宣告 TextBlock 中文字的換行方式。 依預設,TextBlock 中的文字不會自動換行。 因為沒有換行,所以根據其他設定,文字可能發生下列其中一種情況:

  • 如果 TextBlock 沒有明確設定 WidthTextBlock 會根據其中文字的大小而擴展,並且更新 ActualWidth 的值。 不過,TextBlock 一定會在某個其他的容器父項目中,而且會到達配置父項的鏈結 (Chain),此處也一定是寬度條件約束。 如果超過執行的配置條件約束寬度,則會導致文字被剪裁。

  • 如果 TextBlock 已明確設定 Width,則如果超過固定的 WidthTextBlock 會自行進行文字剪裁。

如果要使用自動換行,請將 TextWrapping 設定為列舉值 Wrap。 例如,XAML 中的 <TextBlock Text="The quick red fox jumped over the lazy brown dog." TextWrapping="Wrap" />。 開啟文字換行:

  • 如果 TextBlock 沒有明確設定 Width,則文字會在目前執行的配置條件約速寬度的位置進行自動換行。

  • 如果 TextBlock 已明確設定 Width,則文字會在固定的 Width 位置進行自動換行。

因為 TextBlockActualWidth 一定會回報文字已擴展的大小 (即使與配置容器不符也是如此) 所以您可以透過程式設計的方式偵測被剪裁的文字。 只要您確切知道在哪裡讀取執行剪裁之配置容器的 Width,便可以比較這兩個值。

如需詳細資訊,請參閱 TextBlockTextWrapping

未換行與換行文字的 TextBlock 呈現方式

Cc189010.LazyDog(zh-tw,VS.95).png
TextWrapping 對 ActualWidth 和 ActualHeight 的影響方式

Cc189010.NewWrap(zh-tw,VS.95).png

多行 TextBlock 文字

會因為自動換行或明確 LineBreak 項目這兩種因素,TextBlock 中的文字,可能會以多行顯示。 TextBlock 的下列兩個屬性會影響多行文字的顯示方式:LineHeight 以及 LineStackingStrategyLineHeight 設定整體 TextBlock 中的每一行內容的高度。 LineHeight 其實是基準高度的基準,如此一來,如果您設定小於 FontSizeLineHeight,文字可能會以垂直維度被切斷。 通常,您會保留不設定 LineHeight,而仰賴,根據 FontSize 加上位移呈現有效文字行高度的預設值。如果使用 LineStackingStrategy,則它會影響預設的演算法。 LineStackingStrategy..::.MaxHeight (預設值) 會以字型中任一字元的最大高度做為有效文字行高度的基準。LineStackingStrategy..::.BlockLineHeight 會以「區塊」字型設計度量 (也會儲存為字型中的值) 做為有效文字行高度的基準。

套用轉換到 TextBlock 文字

轉換可改變您的應用程式中所顯示的文字。 轉換是一般的 UI 項目概念,適用於許多不同的類別,包括文字項目。 您會在文字上使用轉換效果以及其他可能的使用案例包含下列:

RotateTransform,反轉文字

ScaleTransform,用於大於字型中所繼承之支援大小上限的文字

SkewTransform,用於切變或斜體模擬

TranslateTransform,用於位移與陰影效果

當您在文字中套用轉換時,首先應該考慮是否還有其他方法可以使用文字項目屬性而產生類似的效果。 例如,如果字型家旅支援斜體 FontStyle,那麼比起套用 SkewTransform,它的結果在視覺上能夠產生更吸引人的效果,或者,設定 FontSize 並使用字型啟用的提示與特點時,比較在文字上設定 ScaleTransform,也可以獲得較理想的效果。

您可能需要在文字上使用轉換的一個使用案例是,您可以設定轉換的動畫,以產生視覺效果。

建立 TextBlock 文字的動畫

許多文字屬性 (Property) 的值可以建立成動畫,包含 FontSize 的文字大小、透過 TranslateTransform 的位置和色彩。 如需哪些屬性值類型支援動畫的詳細資訊,請參閱動畫概觀

將文字屬性 (尤其是大小或前景筆刷) 建立成動畫可能會耗用許多系統資源。 這是因為 Silverlight 在呈現文字時,會使用提示來使每個文字圖像變平滑。 如果您建立文字大小的動畫 (藉由使用 TransformFontSize),則 Silverlight 會提示每個畫面的圖像,這是很耗費資源的,並可能會造成畫面捨棄。 如果應用程式需要對大型文字進行動態縮放變更,則建議您使用下列其中一種替代方案:

  • 以向量圖形模擬文字,例如 Path

  • 在要在其中設定文字動畫的項目上,將附加屬性 TextOptions..::.TextHintingMode 設定為值 Animated。 如需詳細資訊,請參閱 TextOptions

利用LineBreak實現文本豎排:實做見 泡菜肉丝 的博客 http://www.cnblogs.com/JinDin/archive/2010/03/21/1691206.html

这篇关于Silverlight-TextBlock換行-LineBreak的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682191

相关文章

SP2010开发和VS2010专家食谱--第五章节—Web部件(6)--创建Silverlight Web部件

本文中,我们将创建一个Silverlight应用程序,从第一章节使用的联系人列表中获取数据。

在SharePoint页面嵌入简单的Silverlight程序

在SharePoint页面嵌入简单的Silverlight程序 1. 打开VS,新建项目Silverlight。 2. 命名MyBannerAd,确定。 3. 清除选项“在新网站中承载Silverlight应用程序”,确定。 4. 右击项目添加文件夹Images。右击Images添加现有项,添加两个图片gear.png和branded.png。 5. 右击MainPag

WPF/Silverlight中的MVVM模式能否在WinForm/ASP.NET上运用?

一. 摘要   随着WPF/Silverlight等技术的出现,一种新的模式出现在大家面前,那就是MVVM,提到这个模式,大家也许感觉很迷惑,也许会不屑于故,也许你会说我现在做项目都形成了自己的框架了,为什么还要花费额外的时间和精力去学习这个MVVM模式呀?这个模式到底能给我们带来什么样的好处?那么我们本篇也会简单提及,由于这个会在WPF 基础到企业应用系列索引 里详细讲解,所以今天只是走马观花

Silverlight项目在iis上发布

(一)、安装配置iis 其实 iis发布了7.0版本了,本来以为要安装最新版的,不过其实不必。 照网上的说法,xp 对应 iis 5.1,windows2003 对应 iis 6.0,windows Vista 、windows 7 和windows 2008 对应 7.0,当然xp也可以安装 iis6.0,不过要做些系统修改,网上有教程。这里不说了。我最后还是用了iis 5.1. 控制面

Essential Silverlight 2 Up-to-Date

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。 http://blog.csdn.net/topmvp - topmvp Now you can design rich Internet applications (RIAs) for the Web using Silverlight 2, the latest version

Accelerated Silverlight 2

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。 http://blog.csdn.net/topmvp - topmvp Accelerated Silverlight 2 will get you up to speed with the latest version of Silverlight quickly and e

Silverlight与Flash、ActiveX、Java Apple的区别

在学习Microsoft   Silverlight技术过程中,我认为我们有必要近一步了解和明确相关概念。比如:Flash、ActiveX、Java   Apple和Silverlight这些技术,都可以让我们在浏览器上展示出比HTML/CSS   JavaScript的元素更丰富内容,那他们之间有什么本质上的区别呢?   首先,Silverlight是以XAML(扩展程序标记语言)为前台解

C#WPF控件TextBlock、Label以及与TextBox的区别

本文讲解TextBlock、Label以及与TextBox之间的的区别。 目录 TextBlock和Label区别 TextBox和TextBlock控件区别 TextBlock和Label区别 TextBlock和Label都用于显示文本,但它们有一些区别: 继承:Label继承自ContentControl,而TextBlock直接继承自FrameworkElement。

SilverLight 2 beta2开发中的碰到的诸多问题

最近在某一个项目中途使用SilverLight开发其中一个展示的功能。中途碰到不少问题,一部分能够短时间解决,另一些则不明就里。   ScriptManager是在ASP.NET中Host Silverlight应用必须要的一个控件,然而加入进去以后却有一个Sys._Application不能类型转换的问题。去网上搜了一下,知道这个问题的根源不在SilverLight,而在Menu等其他的AS

Fix for Could not download the Silverlight application error

转载于 http://www.apijunkie.com/APIJunkie/blog/post/2008/08/Fix-for-Could-not-download-the-Silverlight-application-error.aspx If you receive the following error:  Could not download the Silverlight app