Как this MSDN page suggests вы можете использовать привязку данных для установки цели размещения во всплывающей подсказке.Getting PlacementTarget всплывающей подсказки в коде за
В моем UWP приложение У меня есть следующий код XAML и код позади:
<Button x:Name="MyButton">
<ToolTipService.ToolTip>
<ToolTip PlacementTarget="{Binding ElementName=MyButton}"
Loaded="FunkyMethod">
<Border Width="150"
Height="50"
CornerRadius="10"
Background="DeepSkyBlue">
<TextBlock Text="This is a tooltip"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="White"/>
</Border>
</ToolTip>
</ToolTipService.ToolTip>
<Button.Content>Button with ToolTip</Button.Content>
</Button>
private void FunkyMethod(object sender, RoutedEventArgs e)
{
var tooltip = sender as ToolTip;
var button = tooltip?.PlacementTarget as Button; // always returns NULL for the placement target
if (tooltip != null && button != null)
{
// do something funcky here.
}
}
Но цель размещения никогда не будет установлен, и я всегда получаю NULL. Кто-нибудь знает, почему?
В контексте я пытаюсь написать код, который будет вычислять смещение по горизонтали/вертикали, необходимое для размещения всплывающей подсказки справа от родительского элемента и вертикально центрированного. Что-то вроде этого:
Но я не смог найти способ достижения этой цели (размещение = Right или Top не работает). Так что я пытаюсь сделать это в коде, находящемся во время выполнения, а) установить Placement = Mouse, b) определить родительский элемент управления через PlacementTarget, c) найти положение мыши относительно родительского элемента управления, d) вычислить горизонтальное/вертикальное смещение и установить его для всплывающей подсказки
Кто downvoted и проголосовавшие, чтобы закрыть это? Это совершенно правильный вопрос. –