TextBlock 的run元素

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

xaml 复制代码
<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元素

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

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

第二个Run元素

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

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

区别

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

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

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

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

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

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

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

因此,对于你的示例:

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

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

显示的赋值文本呢?


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

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

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

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

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

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

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

    xml 复制代码
    <Run Text="{Binding Path=SomeTextProperty}" />

    或者

    xml 复制代码
    <Run Text="{StaticResource SomeTextKey}" />

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

总结


是的,您完全正确。

xml 复制代码
<Run>这是一段文本内容</Run>

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

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

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

xml 复制代码
<Run Text="这是一段文本内容" />

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

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

相关推荐
MarcoAI1 小时前
github SSH连接(windows)
windows·ssh·github
Envyᥫᩣ1 小时前
深入浅出C#编程语言
开发语言·c#
机器人天才一号3 小时前
C#从入门到放弃
开发语言·c#
吾与谁归in3 小时前
【C#设计模式(10)——装饰器模式(Decorator Pattern)】
设计模式·c#·装饰器模式
冷眼Σ(-᷅_-᷄๑)10 小时前
Path.Combine容易被忽略的细节
c#·.net
SongYuLong的博客16 小时前
C# (定时器、线程)
开发语言·c#
天幕繁星16 小时前
docker desktop es windows解决vm.max_map_count [65530] is too low 问题
windows·elasticsearch·docker·docker desktop
百锦再17 小时前
详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送
windows·c#·计算机外设
无敌最俊朗@18 小时前
unity3d————协程原理讲解
开发语言·学习·unity·c#·游戏引擎
程序设计实验室18 小时前
在网页上调起本机C#程序
c#