如何在工具提示显示之后(或之前?)
获取工具提示的位置我用箭头制作了一个自定义控件,我想根据位置设置箭头的正确位置。 使用转换器,我可以获得工具提示并返回箭头的位置。
但我怎么知道工具提示的位置?看来placement属性总是设置在Top(但在我的例子中,工具提示在我的按钮下......)
我试过这个:(试图绑定整个工具提示或仅绑定放置属性。放置始终是“顶部”。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is PlacementMode)
{
PlacementMode pm = (PlacementMode)value;
TooltipArrowPosition retour = TooltipArrowPosition.Top;
switch (pm)
{
case PlacementMode.Top:
retour = TooltipArrowPosition.Bottom;
break;
case PlacementMode.Bottom:
retour = TooltipArrowPosition.Top;
break;
}
return retour;
}
else if (value is ToolTip)
{
ToolTip tt = (ToolTip)value;
}
return TooltipWithArrow.TooltipArrowPosition.Top;
}
编辑:我的模板在“展示位置”上有一个设置为Top的设置器,我将其删除并且现在设置为“鼠标”,这并没有真正帮助我解决这个问题。 但我“需要”它到顶部,我希望我的工具提示默认位于按钮/ datagrid的顶部,如果没有足够的空间,则在控制之下。
EDIT2 我试图得到我的工具提示的绝对位置,并将其与按钮的绝对位置进行比较,我可以得到按钮的位置,但我找不到工具提示的祖先来获得它的相对位置,对吧任何想法?
else if (value is ToolTip)
{
ToolTip tt = (ToolTip)value;
PlacementMode pm = tt.Placement;
if (tt.Parent is Popup)
{
Popup pp = (Popup)tt.Parent;
Point relativePoint = pp.PlacementTarget.TransformToAncestor(MainWindow._This.TopGrid)
.Transform(new Point(0, 0));
Point relativePointPopup = tt.TransformToAncestor(???)
.Transform(new Point(0, 0));
}
}