2016-09-26 4 views
0

Если я создаю только одну подсказку и устанавливаю ее свойство staysopen на false, это работает. Но если я создаю несколько подсказок и устанавливаю их свойство staysopen на false, то только первая подсказка, которую я создаю, закрывается после щелчка мыши. Остальные остаются открытыми.Wpf multiple tooltip 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 Дополнительная информация: По умолчанию ToolTip свойство не поддерживает ToolTip элемент с StaysOpen установлен неверно.

Если вы хотите, чтобы остаться открытым Обновлять 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; 
     }