4

我正在尝试制作一个范围控件,它基本上是一个带有额外拇指的滑块控件。我为已经构建的代码找到的唯一代码在这里。

http://www.codeplex.com/AvalonControlsLib

在我的一生中,当它被移动时,我无法在每个拇指(带有当前值)上方显示一个工具提示。它将显示一个简短的鼠标悬停工具提示,但在移动拇指时它会消失。有谁知道关于这个特定控件的任何信息,或者您如何将第二个拇指添加到滑块控件并以相同的方式使用它?除了指向上面的链接之外,我在一些论坛上发现了这个基本问题,没有答案。当然,人们总是提到它是多么容易,而没有展示或解释你将如何去做。提前致谢。

鲍勃

4

2 回答 2

4

我假设您正在尝试从这里使用 Avalon Controls:Avalon Controls

我在控件模板中的拇指上添加了一个工具提示,并将其命名为 PART_LeftToolTip

<ControlTemplate TargetType="{x:Type Controls:RangeSlider}">
    <StackPanel Orientation="Horizontal" Name="PART_RangeSliderContainer">
         <RepeatButton Name="PART_LeftEdge"/>                        
         <Thumb Name="PART_LeftThumb" Cursor="SizeWE">
               <Thumb.ToolTip>
                     <ToolTip Name="PART_LeftToolTip" />        
               </Thumb.ToolTip>
          </Thumb>                                             
          <Thumb Name="PART_MiddleThumb" Cursor="ScrollWE" MinWidth="1"/>
          <Thumb Name="PART_RightThumb" Cursor="SizeWE">
                <Thumb.ToolTip>
                      <ToolTip Name="PART_RightToolTip" />
                </Thumb.ToolTip>
          </Thumb>
          <RepeatButton Name="PART_RightEdge"/>
      </StackPanel>
</ControlTemplate>

我将它们作为模板部件添加到 RangeSlider 控件

TemplatePart(Name = "PART_LeftToolTip", Type = typeof(ToolTip)),
TemplatePart(Name = "PART_RightToolTip", Type = typeof(ToolTip))]
public sealed class RangeSlider : Control

在 OnApplyTemplate 方法中,我做了以下

_leftPreviewToolTip = EnforceInstance<ToolTip>("PART_LeftToolTip");
_rightPreviewToolTip = EnforceInstance<ToolTip>("PART_RightToolTip");

在 InitializeVisualElements 方法中,我添加了以下内容

private void InitializeVisualElementsContainer()
{
   // ** same as before ** //

   _leftPreviewToolTip.PlacementTarget = _leftThumb;
   _rightPreviewToolTip.PlacementTarget = _rightThumb;
}

现在对于有趣的部分,基本上您希望在移动拇指时显示此工具提示。对于左侧工具提示,您希望它在左拇指移动或中间拇指移动时显示。我创建了一个名为 ShowLeftTooltip 的方法,并分别从 LeftThumbDragDelta 和 CenterThumbDragDelta 调用它。

private void ShowLeftToolTip()
{
    _leftPreviewToolTip.IsOpen = AutoToolTip;
    // This is a little trick to cause the ToolTip to update its position next to the Thumb
    _leftPreviewToolTip.HorizontalOffset = _leftPreviewToolTip.HorizontalOffset == 0.0 ? 0.001 : 0.0;
}

移动工具提示的提示不是我想到的,我是从某个地方的另一个帖子中得到的。

我将把它作为练习留给读者来实现正确的工具提示。

您可以设置工具提示的样式,以便灵活显示。不要忘记给工具提示提供一些数据上下文,这样它就不会是空白的。

于 2010-06-24T16:04:07.893 回答
0

您可以将 的IsOpen属性绑定ToolTip到 的IsDragging属性Thumb

于 2009-07-10T01:06:44.317 回答