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