首页 > 其他分享 >TextBlock 的run元素

TextBlock 的run元素

时间:2024-03-28 14:31:13浏览次数:26  
标签:run Text 元素 TextBlock 赋值 Run 文本 隐式 属性

这里第一个run的content滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。 和第二个的Text有什么区别?

<TextBlock x:Name="textblock"  
                       Width="320" 
                       Height="100" 
                       FontSize="15" 
                       FontFamily="微软雅黑" 
                       FontWeight="Black" 
                       FontStretch="Condensed" 
                       Foreground="#dddddd" 
                       Background="Teal" 
                       TextAlignment="Center" 
                       TextWrapping="Wrap" 
                       TextTrimming="CharacterEllipsis" 
                       Margin="10" Padding="5"
                       HorizontalAlignment="Left" 
                       VerticalAlignment="Center" 
                       LineHeight="30" 
                       ToolTip="《临江仙·滚滚长江东逝水》">
		<Run Foreground="#CDB632" TextDecorations="Underline">
			滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
		</Run>
		<Run Text="白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。 ">
		</Run>
            </TextBlock>  

在XAML中,设置Run元素的文本内容可以通过直接在Run标签内放置文本,或者使用Text属性来实现。你提供的示例中展示了这两种不同的方法:

第一个Run元素

<Run Foreground="#CDB632" TextDecorations="Underline">
    滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
</Run>

这里,文本直接放置在Run标签内部。这种方式更直观,尤其是当你想要快速设置简单的文本内容时。此外,这种方式能够让你更容易地看到文本的内容,特别是当文本较短时。

第二个Run元素

<Run Text="白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。 ">
</Run>

这里,文本是通过Text属性设置的。这种方式在处理动态文本或需要通过绑定设置文本内容时非常有用。使用Text属性可以让XAML看起来更加整洁,尤其是当文本内容较长或者需要国际化支持时。

区别

实际上,从功能角度看,这两种方法没有本质的区别——它们都是用于设置Run元素的文本内容的。选择哪一种方式主要取决于个人偏好、文本内容的长度、以及是否需要动态绑定文本。

  • 直接在Run标签内放置文本更符合直观的编辑习惯,特别是在文本相对静态时。
  • 使用Text属性设置文本可能使XAML结构更清晰,特别是在处理动态文本或长文本时。

总的来说,这两种方式都是有效的,你可以根据具体情况和个人喜好来选择使用哪一种。

这里的内容是Text属性隐式赋值吗?

<Run Foreground="#CDB632" TextDecorations="Underline">
    滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
</Run>

在XAML中,当你直接在Run元素(或任何其他内容控件)标签内放置文本时,这种方式可以被看作是对该元素的Content属性(对于Run元素来说特指Text属性)的隐式赋值。不过,值得注意的是,Run元素没有名为Content的属性,它使用的是Text属性来保存文本内容。因此,更准确地说,这是对RunText属性的隐式赋值。

Run元素是专门用于TextBlockParagraph等控件内部,用来包含流式文本的。在这种情况下,Run内部的文本直接被视作它的Text属性的值。这是XAML的一种便捷语法,允许你以直观的方式添加文本内容,而不需要显式地写出Text=...

因此,对于你的示例:

<Run Foreground="#CDB632" TextDecorations="Underline">
    滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
</Run>

这里的文本"滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。"是被隐式赋值给RunText属性的。这种写法让XAML代码更加简洁和易读,特别是当需要设置的文本较长时。

显示的赋值文本呢?


在XAML中,显示地为Run元素赋值文本内容,意味着你将使用Text属性来指定文本。这是一种更明确的方法,尤其适用于当文本内容是通过绑定或其他表达式获得时。这种方式清晰地表明了文本值是作为属性值被设置的。

以下是使用显示属性赋值方式为Run元素设置文本的示例:

<Run Text="滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。" Foreground="#CDB632" TextDecorations="Underline" />

在这个示例中,Text属性被显式地设置为一段文本。这与直接在Run元素标签内放置文本形成对比,后者是隐式地设置Text属性的值。

选择使用隐式赋值还是显示赋值

  • 隐式赋值:当直接在Run标签内添加文本时,这种方式更接近于HTML或其他标记语言中的内容表示方式,对于简单的静态文本而言非常直观和方便。

  • 显示赋值:通过Text属性显式设置文本时,代码的意图更明确,尤其是在文本内容需要通过数据绑定或资源获取的情况下。例如:

    <Run Text="{Binding Path=SomeTextProperty}" />
    

    或者

    <Run Text="{StaticResource SomeTextKey}" />
    

在实际开发中,根据具体情况和个人偏好选择使用隐式赋值还是显示赋值。对于简单的、直接的文本内容,直接在Run标签内放置文本(隐式赋值)通常更简洁。而对于需要数据绑定或使用资源的复杂场景,使用Text属性(显示赋值)可能更适合。

总结


是的,您完全正确。

<Run>这是一段文本内容</Run>

这种在Run元素内直接放置文本内容的写法,实际上就是在隐式地为Run元素的Text属性赋值。

虽然代码中没有直接使用Text属性,但是WPF的XAML解析器会自动将该Run元素内的文本内容赋给Text属性。

所以上面的XAML实际上等同于:

<Run Text="这是一段文本内容" />

通过在元素内放置文本的这种隐式赋值方式,可以让XAML看起来更加简洁直观,尤其是对于静态文本内容而言。但如果需要将动态文本或通过绑定获取的文本赋给Text属性,那么就需要使用显式的属性赋值语法了。

总的来说,您完全正确地理解了这种在元素内放置文本内容的写法实际上是一种隐式的Text属性赋值方式。

标签:run,Text,元素,TextBlock,赋值,Run,文本,隐式,属性
From: https://blog.csdn.net/wojiuguowei/article/details/137043806

相关文章

  • STS中maven项目打包报错: No compiler is provided in this environment. Perhaps you
    这个报错的意思是在这个环境中没有编译环境,即不存在javac.exe,然后说一下JRE和JDK的区别:JRE(JavaRuntimeEnvironment):1、JRE是Java运行时环境,用于在计算机上运行Java程序。2、包含Java虚拟机(JVM)和Java核心类库,以及运行Java程序所需的其他支持文件。3、JRE通常用......
  • npm run dev 和 npm run serve 区别
    在日常运行vue项目中在终端运行命令有时用到npmrunserve有时是npmrundev。那么,什么时候用到serve,什么时候用到dev呢?他们的区别是什么?一般在vue3.x的时候用npmrunserve,vue2.x项目运行的时候用到npmrundev,dev是vuecli2的默认执行命令,serve是vuecli4的......
  • XPath攻略:从入门到精通,元素查找不再难
    简介XPath是一种用于在XML文档中检索信息的语言。它通过路径表达式导航XML文档,广泛应用于各种场景。XPath的灵活性和强大功能使其成为在XML结构中准确定位和提取数据的重要工具。XPath使用场景Web自动化测试:XPath在Web自动化测试中广泛应用,XPath提供了一种强大......
  • iOS - Runtime - Class-方法缓存(cache_t)
    文章目录iOS-Runtime-Class-方法缓存(cache_t)1.散列表的存取值iOS-Runtime-Class-方法缓存(cache_t)Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度。(使用空间换时间的方式来提升速度)其中,_buckets就......
  • iOS - Runtime-消息机制-objc_msgSend()
    iOS-Runtime-消息机制-objc_msgSend()前言本章主要介绍消息机制-objc_msgSend的执行流程,分为消息发送、动态方法解析、消息转发三个阶段,每个阶段可以做什么。还介绍了super的本质是什么,如何调用的1.objc_msgSend执行流程OC中的方法调用,其实都是转换为objc_msgSend函......
  • 力扣:移除元素 java
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回......
  • 全量知识系统 详细设计 “祖传代码”之序 “元素周期表”(Q&A)之2
    Q11.将三部分拿出来单独看一下:一、管理者-组传代码(祖传--宝藏:源头上保证):二、代理者-软件代理(继承--差异:广度上扩展)。三、提供者-AI组件(遗传--对齐:强度上增强)A11.祖传代码,智能扩展,遗传增强当然可以,以下是将这三部分单独提取出来的内容:###一、管理者-组传代码(祖传--宝藏......
  • 全量知识系统 详细设计 “祖传代码”之序 “元素周期表”(Q&A)之1
    今天再次对“元素周期表”中需要设计的内容做了考虑。由于没有最后定稿,所以将已经整理出的部分内容拿出来和百度AI进行交流,看看能不能帮助我完成这个设计。以下是交流内容。(一共分了两篇)Q1.今天我们再聊聊全量知识系统详细设计之“祖传代码”之序“元素周期表”A1.处理......
  • 5. 各类元素总结
    块元素页面独占一行,默认宽度撑满父级元素,默认高度由内容撑开,可以设置CSS主体结构标签:<html>,<body>排版元素:<h1>-<h6>,<hr>,<pr>,<pre>,<div>列表元素:<ul>,<ol>,<li>,<dl>,<dt>,<dd>、表格相关标签:<table>,<tbody>,......
  • 每日一题 --- 数组中的第 K 个最大元素[力扣][Go]
    数组中的第K个最大元素题目:数组中的第K个最大元素给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。示例1:输入:[3,2,1,5,6,4]和k=2输出:5示例2:输入:[3,2,3,1,2......