У меня есть всплывающая подсказка для элемента, который я хочу оставить открытым даже тогда, когда пользователь нажимает или удерживает кнопку мыши, когда он находится над моим элементом.
Есть ли в любом случае, чтобы сделать это?
Существует свойство всплывающей подсказки StaysOpen, но согласно этой книге вам лучше использовать всплывающий элемент управления (просто сделайте его похожим на подсказку).
Вот цитата из книги:
Не имеет никакого эффекта на практике. целевое назначение этого имущества чтобы позволить вам создать всплывающую подсказку, которая остается открытым, пока пользователь не нажмет где-нибудь еще. Тем не менее Свойство ToolTipService.ShowDuration переопределяет свойство StaysOpen. Как результат, подсказки всегда исчезают после настраиваемого промежутка времени (обычно около 5 секунд) или когда пользователь убирает мышь Если ты хочешь создать окно, похожее на всплывающую подсказку, остается открытым до бесконечности, самый простой подход заключается в использовании всплывающего элемента управления.
Самый простой способ - использовать Popup. Посмотрите на пример кода.
<!--Your ToolTip--> <Popup x:Name="InfoPopup" PlacementTarget="{Binding ElementName=yourElement}" AllowsTransparency="True" StaysOpen="False" Placement="Mouse" PopupAnimation="Fade"> <Border BorderBrush="White" BorderThickness="1" Background="#FFFFFFFF" > <Label Content="Your text here" /> </Border> </Popup> <!--Your element. Border, Button etc..--> <Border x:Name="yourElement" Background="#FFFFFF" MinWidth="20" Height="20"> <Border.Triggers> <EventTrigger RoutedEvent="Mouse.MouseDown"> <BeginStoryboard> <Storyboard> <BooleanAnimationUsingKeyFrames Duration="0:0:0:0" Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="InfoPopup"> <DiscreteBooleanKeyFrame Value="True"></DiscreteBooleanKeyFrame> </BooleanAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent="Mouse.MouseUp"> <BeginStoryboard> <Storyboard> <BooleanAnimationUsingKeyFrames Duration="0:0:0:0" Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="InfoPopup"> <DiscreteBooleanKeyFrame Value="False"></DiscreteBooleanKeyFrame> </BooleanAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </Border.Triggers> </Border>