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 に答える