2010-07-12 72 views
3

我只是試圖找出一種方式來獲得在WPF中的滑塊的拇指拇指,像這樣:獲取的滑塊

Slider mySlider = new Slider(); 

Thumb thumb = slider.Thumb; 

現在我知道這是不可能的,因爲這樣簡單;但是必須有一個解決這個問題的方法。如果你知道的話,讓我知道。

謝謝!

回答

10

SliderTemplatePartAttribute聲明它應該有一個模板部分稱爲TrackPART_TrackTrack可以給我們參考Thumb。請記住,可以給Slider一個沒有Track的模板,在這種情況下不會有Thumb

private static Thumb GetThumb(Slider slider) 
{ 
    var track = slider.Template.FindName("PART_Track", slider) as Track; 
    return track == null ? null : track.Thumb; 
} 
+3

在我的情況下,slider.Template == null,現在該怎麼辦? – Cuero 2012-09-21 00:44:11

+0

模板滑塊爲空時的任何解決方案? – deathrace 2013-05-15 04:21:44

2

找到了解決方案,我自己從VisualTreeHelper的一點幫助。任何優化極大的讚賞:

private Thumb Thumb 
{ 
    get 
    { 
     return GetThumb(this /* the slider */) as Thumb;; 
    } 
} 

private DependencyObject GetThumb(DependencyObject root) 
{ 
    if (root is Thumb) 
     return root; 

    DependencyObject thumb = null; 

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(root); i++) 
    { 
     thumb = GetThumb(VisualTreeHelper.GetChild(root, i)); 

     if (thumb is Thumb) 
      return thumb; 
    } 

    return thumb; 
}