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

本文关键字:访问控制 代码 WPF | 更新日期: 2023-09-27 18:33:30

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

<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>

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

您可以使用 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);  
}

您可以更新此函数以检查子名称也返回