自定义WPF中Slider的Autotooltip模板

Slider控件有一个我比较喜欢的属性"AutoToolTip",可以在拖动的过程中显示当前刻度,然而这个刻度却不支持模板定制,并且就连自定义格式也不行。这就大大的限制了它的使用范围。网上有篇文章Modifying the auto tooltip of a Slider(由于wordpress被和谐了,这个地址是无法访问的)解决了这个问题,可以实现自定义显示格式

代码如下: 

Code

 

使用起来也很简单。
<local:FormattedSlider
     AutoToolTipFormat="{}{0}% used"
    AutoToolTipPlacement="BottomRight" />

其实原理也不复杂,通过反射设置"_autoToolTip"变量,从而实现自定义AutoToolTip格式

private ToolTip AutoToolTip
{
    get
    {
        if (_autoToolTip == null)
        {
            FieldInfo field = typeof(Slider).GetField(
                "_autoToolTip",
                BindingFlags.NonPublic | BindingFlags.Instance);

            _autoToolTip = field.GetValue(this) as ToolTip;
        }

        return _autoToolTip;
    }
}

你可能感兴趣的:(tooltip)