Xaml 访问文本块的背景色

Xaml 访问文本块的背景色,xaml,windows-runtime,windows-store-apps,winrt-xaml,Xaml,Windows Runtime,Windows Store Apps,Winrt Xaml,我在MSDN上找到了这个,它显示了一些配置文本块的方法: 很多东西似乎对我有用,但这部分失败了: textBlock.Background = Brushes.AntiqueWhite; “背景”部分用红色下划线,Visual Studio显示:“Windows.UI.Xaml.Controls.TextBlock不包含背景的定义” 我很困惑 这是最近的变化吗?或者这个后来被删除了吗?如果我没记错的话,WinRT很大程度上是基于Silverlight的,而TextBlock源自Framewor

我在MSDN上找到了这个,它显示了一些配置文本块的方法:

很多东西似乎对我有用,但这部分失败了:

textBlock.Background = Brushes.AntiqueWhite;
“背景”部分用红色下划线,Visual Studio显示:“Windows.UI.Xaml.Controls.TextBlock不包含背景的定义”

我很困惑


这是最近的变化吗?或者这个后来被删除了吗?

如果我没记错的话,WinRT很大程度上是基于Silverlight的,而
TextBlock
源自
FrameworkElement
,与WPF不同,它没有自己的
背景属性

一种解决方法是只使用一个附加元素提供相同的效果,作为容器,并使用
边框
网格
背景
等提供背景

<Border Background="AntiqueWhite">
  <TextBlock/>
</Border>

不幸的是,我认为这是你目前唯一的选择。希望这有帮助。

您也可以使用以下代码进行动态更改。(仅适用于WPF)


这将背景设置为古董白色。此外,网格的高度和宽度绑定到TextBlock的高度和宽度,因此您不必手动设置网格的大小

        <Grid Background="AntiqueWhite" Height="{Binding ActualHeight , ElementName=textBlock1}" Width="{Binding ActualHeight , ElementName=textBlock1}">
         <TextBlock x:Name="textBlock1" Text="Text" />
        </Grid>

在UWP中,许多控件已经被简化(可能是为了减少内存占用),并且没有WPF同类的某些典型属性


不必在所讨论的UWP元素上设置像
.Background
这样的属性(正如一些答案已经提到的),它可以嵌套放置在
元素中,但不建议这样做,除非您希望分配给
网格的属性在多个子元素之间共享。如果要将背景(或在UWP控件中找不到的其他属性)应用于
文本块
或类似对象,则应将其包装在
元素中,这是仅尝试自定义单个元素时推荐的方法,并且比将其包装在
元素中轻得多,在布局计算和内存开销方面。

设置文本块的背景颜色

TextblockName.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FF202B49"));

您的MSDN链接不适用于Windows运行时版本的
TextBlock
。正确的链接在这里:如果我想为9个文本块中的5个文本块设置“背景色”怎么办?@MoumitMondal然后我建议使用与上述相同的想法制作一个
ContentControl
,这样你就可以更容易地将其应用到多个地方:)谢谢@Chris W。。。我两天前才开始学习
XAML
。。。所以
ContentControl
对我来说也不清楚。。。但我很快就会拿到的…:D@vapcguy是的,这是一个非常常见的场景,因为人们正在从WPF过渡到UWP,并且仍然在学习他们自己的差异,因为他们熟悉的是WPF。因此,他们快速地在谷歌上搜索,忘记检查框架,然后发布与他们能找到的问题相关的内容。就像我说的,不用担心。Cheers@vapcguy不,XAML通常都是一样的,除了语法和用法上的一些细微差别,如附加属性等(除了进入xamarin XAML时,StackPanel变为StackLayout等),但是使用它们的框架很多……但它们都源于XML,就像HTML、SVG等一样。。一切都很好。在WPF的土地上对我来说很好。OP询问XAML控件
TextBlock
,MSDN链接转到
TextBlock.FontSize
。从那里往上一层是
TextBlock
Properties:它清楚地将
Background
列为属性。那些在Silverlight/WinRT领域的人可能没有它。我想这就是投票被否决的原因。如果只是WPF,那么它与问题无关。这不起作用。一旦选中该文本框,其背景将变为白色。
        <Grid Background="AntiqueWhite" Height="{Binding ActualHeight , ElementName=textBlock1}" Width="{Binding ActualHeight , ElementName=textBlock1}">
         <TextBlock x:Name="textBlock1" Text="Text" />
        </Grid>
TextblockName.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FF202B49"));