在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%)。
每次鼠标悬停在控件之上时,什么可以防止ToolTip以稳定的方式显示,并且在重新加载页面后第一次将鼠标悬停时显示?
答案 0 :(得分:3)
在ToolTip
的设置器中设置SomeProperty
您在ToolTipService
中定义的工具提示将像普通工具提示一样,仅在鼠标悬停在控件上时才会显示。您根本不需要处理MouseEnter
和MouseLeave
事件。