获取工具提示的位置

时间:2015-04-27 08:09:59

标签: wpf tooltip

如何在工具提示显示之后(或之前?)

获取工具提示的位置

我用箭头制作了一个自定义控件,我想根据位置设置箭头的正确位置。 使用转换器,我可以获得工具提示并返回箭头的位置。

但我怎么知道工具提示的位置?看来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));

                }
            }

0 个答案:

没有答案