我在微软开发者网站上找到了这个示例,展示了一些配置文本块的方法:
其中很多看起来对我都有效,但是这部分会失败:
textBlock.Background = Brushes.AntiqueWhite;
“Background”部分被用红色下划线标出,Visual Studio显示:“Windows.UI.Xaml.Controls.TextBlock不包含Background的定义”。
我感到困惑。
这是最近更改的吗?还是后来删除了?
我在微软开发者网站上找到了这个示例,展示了一些配置文本块的方法:
其中很多看起来对我都有效,但是这部分会失败:
textBlock.Background = Brushes.AntiqueWhite;
“Background”部分被用红色下划线标出,Visual Studio显示:“Windows.UI.Xaml.Controls.TextBlock不包含Background的定义”。
我感到困惑。
这是最近更改的吗?还是后来删除了?
如果我没记错的话,WinRT在很大程度上基于Silverlight,其中派生自,并且不像WPF那样有自己的属性。
一个解决方法是提供另一个元素作为容器来实现同样的效果,并使用或以及等属性来提供背景。类似这样;
<Border Background="AntiqueWhite">
<TextBlock/>
</Border>
或者在TextBlock
后面放一个Rectangle
,如果它被包含在Grid
单元格中,可以提供相同的效果,除非你想直接设置Rectangle
的大小;
<Rectangle Fill="AntiqueWhite"/>
<TextBlock/>
很不幸,我认为这是您当前唯一的选择。希望这有所帮助。
ContentControl
,这样您就可以更轻松地在多个位置应用它 :) - Chris W.TextblockName.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FF202B49"));
这将背景设置为古董白。此外,网格的高度和宽度绑定到TextBlock的大小,因此您不必手动设置网格的大小。
<Grid Background="AntiqueWhite" Height="{Binding ActualHeight , ElementName=textBlock1}" Width="{Binding ActualHeight , ElementName=textBlock1}">
<TextBlock x:Name="textBlock1" Text="Text" />
</Grid>
.Background
这样的属性(正如一些答案已经提到的那样)不同,它可以被放置在一个嵌套的<Grid></Grid>
元素中,但这并不推荐,除非您希望将分配给Grid
的属性共享在多个子元素之间。如果您想将背景(或其他在UWP控件中找不到的属性)应用于TextBlock
或类似的元素,则应该将其包装在<Border></Border>
元素中,这是当您只想自定义单个元素时的推荐方法,并且比将其包装在<Grid />
中更轻量级,无论是在布局计算还是内存开销方面。此外,您还可以使用以下代码进行动态更改。(仅适用于 WPF)
textBlock.Background = new SolidColorBrush(Colors.AntiqueWhite);
TextBlock
,因为MSDN链接指向TextBlock.FontSize
。从那里上升一个级别是TextBlock
属性:https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock_properties(v=vs.110).aspx,其中明确列出了`Background`作为属性。那些在Silverlight/WinRT领域可能没有它。我想这就是被踩的原因。 - vapcguy
TextBlock
的 Windows Runtime 版本。正确的链接在这里:http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/windows.ui.xaml.controls.textblock.aspx - chue x