2013-09-30 73 views
0

此拇指在自定義控件滑塊內部使用。有沒有什麼辦法可以在代碼中訪問thumbBorder?訪問控制模板的WPF兒童代碼

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

你想幹什麼用的? –

+0

@HighCore我希望能夠從滑塊的自定義控件(其父)修改它 - 我desribed我的問題[這裏](http://stackoverflow.com/q/19080627/2759011),但它並沒有幫助我很多,所以我正在尋找另一個解決方案。 – InfinitePii

+0

如果您正在創建「自定義控件」,則應該查看「OnApplyTemplate()」以獲取對模板部分的引用。用VisualTreeHelper檢查Visual Tree不是最佳方法 –

回答

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

您可以更新此功能來檢查孩子姓名的最簡單的方法也返回