Я предполагаю, что вы пытаетесь использовать элементы управления Avalon отсюда: Элементы управления Avalon
Я добавил всплывающую подсказку к миниатюрам в шаблоне элемента управления и назвал ее 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;
}
Этот совет по перемещению всплывающей подсказки - это не то, о чем я думал, я получил его где-то в другом посте.
Я оставлю читателю упражнение по реализации правильной всплывающей подсказки.
Вы можете стилизовать всплывающую подсказку, чтобы обеспечить гибкое отображение. Не забудьте дать всплывающей подсказке что-то в качестве контекста данных, чтобы она не была пустой.
person
lifeofmle
schedule
24.06.2010