我正在编写一个WPF应用程序,它有很多不同的控件,每个控件都有自己的ToolTip
。虽然ToolTips
很有用,但其中一些很长并且妨碍了它。
我希望能够创建一个按钮,该按钮可以在点击应用时启用和禁用应用上的所有工具提示。我一直在努力的事情似乎是一种非常漫长而且不必要的方式。有没有办法快速完成我想要的东西?
答案 0 :(得分:4)
您可以尝试添加一个隐式样式,为所有顶级窗口设置所有Visbility
的{{1}}属性为ToolTips
。像这样:
Collapsed
答案 1 :(得分:1)
我需要可以关闭的自定义工具提示。其他解决方案并没有完全涵盖这一点,所以这就是我最终要做的......
此代码允许您拥有自定义提示,并在应用程序范围内轻松打开和关闭它们。就我而言,我将工具提示可见性保存在用户设置中。该设置应用于主窗口加载,然后在更改设置时更新。
在 App.xaml 中:
<Style x:Key="{x:Type ToolTip}" TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border Name="Border" BorderThickness="1" Background="PaleGoldenrod" CornerRadius="4" BorderBrush="Black">
<ContentPresenter Margin="4"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
... various other settings
</Style>
<Style x:Key="NoTip" TargetType="ToolTip">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
然后,在我的 MainWindow.xaml.cs 中(但可以在您更改提示可见性的任何地方):
private Style styleWithTips;
private Style styleNoTips;
...
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Set initial tips on/off
styleWithTips = (Style)Application.Current.Resources[typeof(ToolTip)];
styleNoTips = (Style)Application.Current.Resources["NoTip"];
updateTipStyle();
}
private void Settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "ShowHints")
{
updateTipStyle();
}
}
...
private void updateTipStyle()
{
ResourceDictionary resources = Application.Current.Resources;
bool showHints = Properties.Settings.Default.ShowHints;
if (resources.Contains(typeof(ToolTip)))
{
resources.Remove(typeof(ToolTip));
}
resources.Add(typeof(ToolTip), showHints ? styleWithTips: styleNoTips);
}
答案 2 :(得分:0)
您可以将全局工具提示样式添加到应用程序资源中:
Style _style;
void Button_Click(object sender, RoutedEventArgs e)
{
if (_style == null)
{
_style = (Style)Application.Current.Resources[typeof(ToolTip)];
Application.Current.Resources.Remove(typeof(ToolTip));
}
else
Application.Current.Resources.Add(typeof(ToolTip), _style);
}
这会禁用所有工具提示。
要切换使用以下内容:
null