Als this MSDN page suggests sollten Sie die Datenbindung verwenden können, um ein Placement-Ziel für eine QuickInfo festzulegen.Ermitteln des Placement-Ziels einer QuickInfo im Code hinter
In meiner UWP App habe ich folgende XAML und Code hinter:
<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.
}
}
Aber das Platzierungsziel wird nie gesetzt und ich immer NULL bekommen. Weiß jemand warum?
Für den Kontext versuche ich Code zu schreiben, der den horizontalen/vertikalen Offset berechnen würde, der benötigt wird, um einen Tooltip rechts von seinem übergeordneten und vertikal zentriert zu platzieren. Etwas wie folgt aus:
Aber ich habe nicht in der Lage gewesen, eine Art und Weise, dies zu erreichen (Placement = rechts oder von oben hat nicht funktioniert) zu finden. Also was ich versuche ist, es in Code hinter zur Laufzeit zu tun, durch a) setzen Placement = Maus, b) herauszufinden, die Elternkontrolle über PlacementTarget, c) herauszufinden, die Mausposition relativ zum übergeordneten Steuerelement, d) Berechnen Sie den horizontalen/vertikalen Offset und setzen Sie ihn für den Tooltip
Wer downvoted und stimmten diese schließen? Das ist eine absolut gültige Frage. –