我只是试图找出一种方式来获得在WPF中的滑块的拇指拇指,像这样:获取的滑块
Slider mySlider = new Slider();
Thumb thumb = slider.Thumb;
现在我知道这是不可能的,因为这样简单;但是必须有一个解决这个问题的方法。如果你知道的话,让我知道。
谢谢!
我只是试图找出一种方式来获得在WPF中的滑块的拇指拇指,像这样:获取的滑块
Slider mySlider = new Slider();
Thumb thumb = slider.Thumb;
现在我知道这是不可能的,因为这样简单;但是必须有一个解决这个问题的方法。如果你知道的话,让我知道。
谢谢!
Slider
有TemplatePartAttribute
声明它应该有一个模板部分称为Track
型PART_Track
。 Track
可以给我们参考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;
}
找到了解决方案,我自己从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;
}
在我的情况下,slider.Template == null,现在该怎么办? – Cuero 2012-09-21 00:44:11
模板滑块为空时的任何解决方案? – deathrace 2013-05-15 04:21:44