WPF - 获取可视化树的快速方法

时间:2009-04-08 10:19:23

标签: wpf visual-tree

我在网格中动态添加一些控件。我不知道有多少,我不知道确切的等级。我想要做的是访问一些具有特定类型的控件(例如Button)并实例化一些属性。做这个的最好方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以在网格级别覆盖按钮样式。这是一个例子:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="144*" />
        <RowDefinition Height="171*" />
    </Grid.RowDefinitions>
    <Grid.Resources>
        <!-- Override all Buttons style that are childs of the grid -->
        <Style TargetType="Button">
            <Setter Property="Background" Value="LightBlue"/>
            <Setter Property="FontSize" Value="20" />
        </Style>
    </Grid.Resources>
    <Button Grid.Row="0">Button1</Button>
    <Button Grid.Row="1">Button2</Button>
</Grid>

在此示例中,放置在网格内的所有按钮都具有按网格资源中定义的样式设置的背景和字体大小。

编辑:这适用于在运行时添加的控件按钮,样式将在添加到网格时应用于这些控件,您还可以定义样式programaticaly如果您想要并将它们添加到网格资源,它们将是自动应用。

答案 1 :(得分:0)

您必须使用VisualTreeHelper一路走过VisualTree。有一些关于如何控制specific type

的好例子