Wpf 获得滑块的拇指
我只是想找出一种在WPF中获得滑块拇指的方法,类似这样:Wpf 获得滑块的拇指,wpf,wpf-controls,Wpf,Wpf Controls,我只是想找出一种在WPF中获得滑块拇指的方法,类似这样: Slider mySlider = new Slider(); Thumb thumb = slider.Thumb; 现在我知道不可能这么简单;但必须围绕这一点开展工作。如果你知道的话,请告诉我 谢谢 在VisualTreeHelper的帮助下,我自己找到了解决方案。非常感谢任何优化: private Thumb Thumb { get { return GetThumb(this /* the sl
Slider mySlider = new Slider();
Thumb thumb = slider.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;
}
私人拇指
{
得到
{
返回GetThumb(这个/*滑块*/)作为Thumb;;
}
}
私有DependencyObject GetThumb(DependencyObject根)
{
如果(根是拇指)
返回根;
DependencyObject thumb=null;
for(int i=0;i
有一个声明它应该有一个名为part\u Track
类型的模板部分。轨迹
可以为我们提供对拇指
的参考。请记住,可以为滑块
提供一个没有轨迹的模板
,在这种情况下,将没有拇指
private static Thumb GetThumb(Slider slider)
{
var track = slider.Template.FindName("PART_Track", slider) as Track;
return track == null ? null : track.Thumb;
}
如果只想向thumb添加事件处理程序,而不想等待或强制渲染以避免
slider.Template
为null
,则可以执行以下操作:
slider.AddHandler(Thumb.DragStartedEvent, new DragStartedEventHandler((sender, e) =>
{
// Handling code
}));
在我的例子中,slider.Template==null,我现在应该怎么做?当滑块的模板为null时,有什么解决方案吗?这在包含滑块的自定义控件的OnApplyTemplate中非常有效。我用鼠标事件尝试的所有其他方法都适用于整个自定义控件,而不仅仅是滑块。:)