访问控制模板的WPF代码中的子代

时间:2013-09-30 15:00:25

标签: c# wpf xaml

此拇指用于自定义控件滑块内。有什么方法可以在代码中访问thumbBorder吗?

<Style x:Key="SliderThumbStyle" TargetType="Thumb">
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="OverridesDefaultStyle" Value="false" />
    <Setter Property="Height" Value="18" />
    <Setter Property="Width" Value="18" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Thumb">
                <Grid>
                    <Border x:Name="thumbBorder"
                            CornerRadius="9,0,0,9"
                            Background="DimGray" />

                    <Ellipse x:Name="thumbEllipse"
                             Fill="Orange">
                    </Ellipse>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>       
</Style>

1 个答案:

答案 0 :(得分:1)

您可以使用VisualTreeHelper浏览拇指的可视树,并在其中查找任何子项(边框/椭圆)。 以下是查找特定类型的孩子的最简单方法

private static DependencyObject RecursiveVisualChildFinder<T>(DependencyObject rootObject)  
{  
    var child = VisualTreeHelper.GetChild(rootObject, 0);  
    if (child == null) return null;  

    return child.GetType() == typeof (T) ? child : RecursiveVisualChildFinder<T>(child);  
}

您可以更新此功能以检查子名称也返回