Robin Purbia Ответов: 1

Настройка всплывающего элемента управления в WPF со стилем воздушного шара


Я пытаюсь реализовать всплывающее управление, как показано ниже:

[^]

Это должно быть показано, когда событие MouseEnter происходит на значке "фиолетовый вопросительный знак".

Но я не могу реализовать такой всплывающий стиль, так как я новичок в WPF.

Вещи, которые я хочу сделать, как сейчас:

Чтобы показать всплывающее окно на относительном местоположении к фиолетовому значку"?", который находится справа от центра значка"?".
Реализовать всплывающий стиль, имеющий такой фон, как разговорный воздушный шар. Я не могу жестко закодировать размер всплывающего окна, так как длина текстового содержимого внутри может варьироваться.
Если кто-нибудь может помочь мне достичь контроля всплывающих окон с таким стилем, это было бы большим подспорьем. Заранее спасибо.

Что я уже пробовал:

Я не могу использовать всплывающую подсказку, так как приложение будет работать на сенсорном экране системы, поэтому пользователь не может сделать мышь, чтобы увидеть всплывающую подсказку. Он всегда будет давать событие щелчка, если пользователь коснется фиолетового значка вопросительного знака

Ralf Meier

Вы пробовали использовать Codeproject-Поиск "пользовательской всплывающей подсказки"?
Я очень уверен, что вы найдете что-нибудь полезное ...

Angelo L

Вы все равно можете попробовать воспользоваться подсказкой. Вы говорите, что это событие щелчка? Затем использовать событие click, чтобы установить свойства isopen подсказки к истинному.

1 Ответов

Рейтинг:
2

Angelo L

Итак, вчера я немного повозился с этим. То, что вы, вероятно, хотите, - это что-то более похожее на EventTrigger. Я сделал это на MouseUp, но я думаю, что для вашего использования это будет TouchUp. Я также использовал это событие для сброса цели размещения, так как оно, казалось, сломалось, делая это. Что касается того, как вы хотите, чтобы это выглядело, вы можете проверить Стили и шаблоны всплывающих подсказок[^].

<Image Name="testimage" Source="silhouette.jpg" Height="57" Width="100"  MouseUp="MouseUp_setTarget">
    <Image.ToolTip>
        <ToolTip PlacementTarget="{Binding ElementName=testimage}" Placement="Right"> 
private void MouseUp_setTarget(object sender, MouseButtonEventArgs e)
{
    ((ToolTip)(((FrameworkElement)sender).ToolTip)).PlacementTarget = ((FrameworkElement)sender);
}


<Image.Triggers>
    <EventTrigger RoutedEvent="MouseUp">
        <BeginStoryboard>
            <Storyboard>
                <BooleanAnimationUsingKeyFrames Storyboard.TargetName="{x:Null}"  Storyboard.TargetProperty="ToolTip.IsOpen">
                    <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True" />
                    <DiscreteBooleanKeyFrame KeyTime="0:0:5" Value="False" />
                </BooleanAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Image.Triggers>