如何在程序中以编程方式更改堆栈面板内所有(n个)文本块的字体大小?

6
我正在以编程方式创建“n”个文本块,这些文本块位于堆栈面板内。我需要更改“n”个文本块的字体大小(增大和减小字体大小)。是否可以在单个语句中更改堆栈面板所有子元素的字体大小?如果不可能,如何高效地解决这个问题?

如果您是以编程方式创建TextBlocks,那么在创建它们时无法从代码中设置FontSize吗?您可能需要展示一些代码,因为不明白为什么会出现这个问题。 - Cosmin Prund
4个回答

12
您可以在标记中应用样式:
<StackPanel.Resources>
<Style TargetType="TextBlock">
  <Setter Property="FontSize" Value="20"/>
</Style>
</StackPanel.Resources>

4
是的,您可以参考下面的代码片段,其中'foobar'是指您Stackpanel的名称。
        foreach (var children in foobar.Children)
        {
            (children as TextBlock).FontSize = 20;
        }

4
这段代码可能会导致空指针异常。 - MetaFight

2
如果您想为所有子元素使用另一种样式,为什么不使用“ContentControl”呢?
例如,像这样:
    <GroupBox Header="Some Header" FontSize="18" FontWeight="Bold">
        <ContentControl FontSize="14" FontWeight="Normal">
        ....
        </ContentControl
    <GroupBox>

All elements inside the ContentControl Block will be st with normal weight and a size of 14.

1
你可以使用样式将值应用于 StackPanel 内所有 TextBlock 的属性。

很抱歉之前的回答是错误的。


由于某些原因,你提到的两种方法在Windows Phone上都不起作用:TextBlock没有SetFontSize()方法,而尝试在堆栈面板上设置TextBlock.FontSize,就像在普通的WPF中那样做,也不起作用。 - Cosmin Prund
@CosminPrund 你在Windows Phone 7中使用Silverlight吗?还是其他什么东西? - Mohammad Dehghan
我在Visual Studio 2012中进行了文件->新建->项目->Windows Phone->Windows Phone应用程序,无论默认设置是什么。 - Cosmin Prund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接