Silverlight自定义控件工具提示每次都不显示

Silverlight自定义控件工具提示每次都不显示,silverlight,custom-controls,tooltip,Silverlight,Custom Controls,Tooltip,在Silverlight应用程序中,我有一个具有许多自定义属性的自定义控件。在自定义控件的声明类中,除了将其属性定义为依赖项属性之外,我还定义了显示工具提示: public override void OnApplyTemplate() { base.OnApplyTemplate(); Border bordercntr = base.GetTemplateChild("PART_SBorder") as Border; bordercn

在Silverlight应用程序中,我有一个具有许多自定义属性的自定义控件。在自定义控件的声明类中,除了将其属性定义为依赖项属性之外,我还定义了显示工具提示:

public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        Border bordercntr = base.GetTemplateChild("PART_SBorder") as Border;
        bordercntr.MouseEnter += new MouseEventHandler(bordercntr_MouseEnter);
        bordercntr.MouseLeave += new MouseEventHandler(bordercntr_MouseLeave);

    }

    private void bordercntr_MouseEnter(object sender, MouseEventArgs e)
    {
       string _sno = this.SomeProperty.ToString();

       ToolTipService.SetToolTip(this, "Some text " + _sno);
       VisualStateManager.GoToState(this, "Hovered",false);                            
    }
问题是,工具提示不是在鼠标第一次指向自定义控件时弹出的,而是在鼠标第二次指向自定义控件后弹出的。重新加载页面后,这种情况再次发生:第一次将鼠标悬停在控件上时,不会显示任何内容,然后从第二次开始,再次弹出工具提示。(并非总是以稳定的方式,我的意思是不是每次鼠标悬停时都是100%)


什么可以防止每次鼠标悬停在控件上时工具提示以稳定的方式显示,以及在重新加载页面后第一次悬停时工具提示开始显示

在设置器中为
SomeProperty
设置
工具提示
ToolTipService
中定义的工具提示的行为与普通工具提示类似,仅当鼠标位于控件上方时才显示。您根本不需要处理
MouseEnter
MouseLeave
事件。

谢谢,但是如果我需要将工具提示的文本与控件的多个属性组合起来,该怎么办?在这种情况下,我应该将工具提示定义放在哪里?最简单的方法可能是使用一个私有方法来正确设置工具提示,然后从涉及的每个setter调用该方法。如果涉及的任何属性发生更改,请更新您的工具提示。谢谢,Stephan。我还没有尝试过你的上一个建议,但你关于没有理由处理MouseEnter事件的评论让我找到了现在似乎可以正常工作的方法-我将ToolTipService.SetToolTip放在OnApplyTemplate()中,工具提示现在工作稳定+1.