0

此拇指在自定义控件滑块中使用。有什么方法可以在代码中访问 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>
4

1 回答 1

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);  
}

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

于 2013-09-30T15:08:59.117 回答