如何使用附加属性TextBlock.FontSize?

时间:2011-08-02 22:03:54

标签: wpf

我从书中复制了以下简单代码(见下文)。但我对<Grid TextBlock.FontSize="48">行提出了几个问题。

  1. 从我收集的内容来看,TextBlock.FontSize是一个附加属性,但我最初认为附加属性是为了引用父对象(即当Grid.Row附加属性引用父Grid元素时)。但是从这里使用它可能是我的理解不正确?这是一个附加属性,如果可以,它可以用于子元素吗?

  2. 其次,在网格上设置TextBlock.FontSize。但是,我没有在xaml中使用TextBlock元素(我知道)。我只使用了内容定义的按钮。但是,如果我将TextBlock.FontSize更改为其他值,则字体大小会更改。因此,如何使用TextBlock.FontSize? TextBlock在哪里?

  3. 提前谢谢。

    <Window x:Class="UseAGrid.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid TextBlock.FontSize="48">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="250" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*" />
                <ColumnDefinition Width="auto" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Button Grid.RowSpan="2"
                    Content="2 Rows" />
                <GridSplitter Grid.Row="0"
                              Grid.RowSpan="2"
                              Grid.Column="1"
                              Width="1"
                              Background="Green"
                              ResizeBehavior="PreviousAndNext"
                              ResizeDirection="Columns" />
            <Button Grid.Column="2"
                    Grid.ColumnSpan="2"
                    Content="2 Columns" />
            <Button Grid.Row="1"
                    Grid.Column="2"
                    Content="1,2" />
            <Button Grid.Row="1"
                    Grid.Column="3"
                    Content="1,3" />
        </Grid>
    </Window>
    

1 个答案:

答案 0 :(得分:5)

TextBlock.FontSize不是附加属性,它只是一个常规依赖属性。 MSDN文档非常适合列出控件的附加属性,而FontSizenot one of them(它甚至没有)。

但它是可继承的属性。查看dependency property information,您会发现它的值inherits。这允许我们做的是在祖先中设置属性的值,并且依赖于此属性的所有后代控件将继承相同的值,只要它们没有将值显式设置为其他值。

它适用的控件不必由您显式实例化,它也适用于样式,模板,内容展示器等。因此,在您的情况下,按钮的内容是文本,因此TextBlocks用于显示该文本也将继承字体大小。

有关详细信息,请参阅Property Value Inheritance