Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将工具提示可见性绑定到变量,以便它在代码隐藏中有条件地显示文本_C#_Wpf_Binding_Tooltip - Fatal编程技术网

C# 将工具提示可见性绑定到变量,以便它在代码隐藏中有条件地显示文本

C# 将工具提示可见性绑定到变量,以便它在代码隐藏中有条件地显示文本,c#,wpf,binding,tooltip,C#,Wpf,Binding,Tooltip,如果我有一个包含静态变量的类,该静态变量将包含工具提示的可见性状态,那么当可见性变量更改时,我将如何编写代码来动态更改工具提示的可见性 i、 e.禁用工具提示选项时,不应显示工具提示,但启用工具提示选项时,应显示工具提示。(Tooltip选项保存在不同类的静态变量中)动态创建工具提示及其连接的控件 伪代码: ToolTip myToolTip = new ToolTip(); Visiblity tooltipVis = Visibility.Visible; Bind myToolTip

如果我有一个包含静态变量的类,该静态变量将包含工具提示的可见性状态,那么当可见性变量更改时,我将如何编写代码来动态更改工具提示的可见性

i、 e.禁用工具提示选项时,不应显示工具提示,但启用工具提示选项时,应显示工具提示。(Tooltip选项保存在不同类的静态变量中)动态创建工具提示及其连接的控件

伪代码:

 ToolTip myToolTip = new ToolTip();
 Visiblity tooltipVis = Visibility.Visible;
 Bind myToolTip.Visiblity to toolTipVis
 //Any control with ToolTip should now show their respective ToolTip messages.
 ...
 tooltipVis = Visibility.Hidden;
 //Any control with ToolTip should now have ToolTip messages disabled
尝试绑定到TreeView项目:

 TreeViewItem tvi = new TreeViewItem() { Header = tviHeader };
 ToolTip x = new System.Windows.Controls.ToolTip();
 x.Content = "This is text.";
 Binding binder = new Binding { 
      Source = EnvironmentalVariables.ToolTipVisibility,
      Path = new PropertyPath("Visibility")
 };
 x.SetBinding(VisibilityProperty, binder);
 user.ToolTip = x;

 public class EnvironmentalVariables {
      public static Visibility ToolTipVisibility { get; set; }
 }
这似乎不会将可见性绑定到EnvironmentalVariables.ToolTipVisibility变量。

您可以使用它

<TextBlock Text="Example" ToolTip="This is an example"
           ToolTipService.IsEnabled="{Binding TooltipEnabled, Source={x:Static Application.Current}}">
你可以用这个

<TextBlock Text="Example" ToolTip="This is an example"
           ToolTipService.IsEnabled="{Binding TooltipEnabled, Source={x:Static Application.Current}}">

只需删除您创建的
绑定
对象中的
路径
属性。 这就是它需要工作的全部

  EnvironmentalVariables.ToolTipVisibility = System.Windows.Visibility.Collapsed;

  var b = new Button () { Content = "test" };
  var x = new ToolTip();
  x.Content = "This is text.";
  var binding = new Binding {
    Source = EnvironmentalVariables.ToolTipVisibility,
  };
  x.SetBinding(VisibilityProperty, binding);
  b.ToolTip = x;

如果要在运行时动态更改ToolTipVisibility,则必须实现属性通知。

只需删除所创建的
绑定
对象中的
路径
属性即可。 这就是它需要工作的全部

  EnvironmentalVariables.ToolTipVisibility = System.Windows.Visibility.Collapsed;

  var b = new Button () { Content = "test" };
  var x = new ToolTip();
  x.Content = "This is text.";
  var binding = new Binding {
    Source = EnvironmentalVariables.ToolTipVisibility,
  };
  x.SetBinding(VisibilityProperty, binding);
  b.ToolTip = x;

如果要在运行时动态更改ToolTipVisibility,则必须实现属性通知。

@LPL除非您正在讨论构建模板,否则不能。我坚持我更了解的东西,因此代码是隐藏的,但是如果从XAML可以做到这一点,我完全支持。你的
ToolTipVisibility
是静态的吗?如果没有,您可以将其切换回正常状态,使其激发
PropertyChanged
并使用this@LPL除非你说的是构建一个模板。我坚持我更了解的东西,因此代码是隐藏的,但是如果从XAML可以做到这一点,我完全支持。你的
ToolTipVisibility
是静态的吗?如果没有,您可以将其切换回正常状态,使其激发
PropertyChanged
并使用此功能。如何生成属性通知?由于EnvironmentalVariables.ToolTipVisibility是静态的。您可以更改类EnvironmentalVariables以使用Singleton模式。这样,就可以为singleton实例实现INotifyPropertyChanged。您可以像这样访问属性,例如EnvironmentalVariables.Instance.ToolTipVisibility。如何生成属性通知?由于EnvironmentalVariables.ToolTipVisibility是静态的。您可以更改类EnvironmentalVariables以使用Singleton模式。这样,就可以为singleton实例实现INotifyPropertyChanged。您可以像这样访问属性,例如EnvironmentalVariables.Instance.ToolTipVisibility。是否有更干净的方法来实现这一点?它之所以是静态的,是因为它在多个项目中使用,我不想在每个位置都创建它的实例。我最终在单例上使用INotifyPropertyChanged继承来实现我想要的。有没有更干净的方法来实现这一点?它之所以是静态的,是因为它在多个项目中使用,我不想在每个位置都创建它的实例。我最终在单例上使用INotifyPropertyChanged继承来实现我想要的。