2016-09-26 66 views
0

如果我只创建一个工具提示并将它的staysopen属性设置为false,它的工作。但是,如果我创建多个工具提示并将其staysopen属性设置为false,则只有在鼠标单击后,我创建的第一个工具提示才会关闭。其他人保持开放。Wpf多个工具提示staysopen属性不起作用

为什么?

示例代码:

ToolTip tooltip = new ToolTip { Content = "Password cannot be empty." }; 

Password_PasswordBox.ToolTip = tooltip; 
tooltip.PlacementTarget = Password_PasswordBox; 
tooltip.Placement = System.Windows.Controls.Primitives.PlacementMode.Top; 
tooltip.IsOpen = true; 
tooltip.StaysOpen = false; 

ToolTip tooltip2 = new ToolTip { Content = "Username cannot be empty." }; 

Username_TextBox.ToolTip = tooltip2;    
tooltip2.PlacementTarget = Username_TextBox; 
tooltip2.Placement = System.Windows.Controls.Primitives.PlacementMode.Top; 
tooltip2.IsOpen = true; 
tooltip2.StaysOpen = false; 

回答

0

您正在迫使这两个工具提示打开,然后而不是让他们继续开放,这是造成异常。

System.NotSupportedException了未处理 消息:“System.NotSupportedException”类型的未处理的异常出现在PresentationFramework.dll 附加信息:默认情况下,工具提示属性不支持工具提示元素与StaysOpen设置为false。

如果你希望他们继续开放更新ToolTipService.ShowDurationProperty

 ToolTipService.ShowDurationProperty.OverrideMetadata(typeof(DependencyObject), new FrameworkPropertyMetadata(Int32.MaxValue)); 

     { 
      ToolTip tooltip = new ToolTip {Content = "Password cannot be empty."}; 

      Password_PasswordBox.ToolTip = tooltip; 
      tooltip.PlacementTarget = Password_PasswordBox; 
      tooltip.Placement = System.Windows.Controls.Primitives.PlacementMode.Top; 
      tooltip.IsOpen = true; 
      //tooltip.StaysOpen = false; 
     } 
     { 
      ToolTip tooltip2 = new ToolTip { Content = "Username cannot be empty." }; 

      Username_TextBox.ToolTip = tooltip2; 
      tooltip2.PlacementTarget = Username_TextBox; 
      tooltip2.Placement = System.Windows.Controls.Primitives.PlacementMode.Top; 
      tooltip2.IsOpen = true; 
      //tooltip2.StaysOpen = false; 
     }