Wpf 定义在转换器(工具提示)返回fale时隐藏工具提示的工具提示样式
我想隐藏空的工具提示 这就是在一定程度上起作用的原因:Wpf 定义在转换器(工具提示)返回fale时隐藏工具提示的工具提示样式,wpf,xaml,binding,styles,tooltip,Wpf,Xaml,Binding,Styles,Tooltip,我想隐藏空的工具提示 这就是在一定程度上起作用的原因: <Style TargetType="ToolTip"> <Style.Triggers> <Trigger Property="Content" Value="{x:Static sys:String.Empty}"> <Setter Property="Visibility" Val
<Style TargetType="ToolTip">
<Style.Triggers>
<Trigger Property="Content"
Value="{x:Static sys:String.Empty}">
<Setter Property="Visibility"
Value="Collapsed" />
</Trigger>
<Trigger Property="Content"
Value="{x:Null}">
<Setter Property="Visibility"
Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
有人有想法吗?这应该可以:
<Window x:Class="HideEmptyToolTipsWithTrigger.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:HideEmptyToolTipsWithTrigger"
xmlns:system="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:EmptyToolTipToBooleanConverter x:Key="EmptyToolTipToBooleanConverter" />
<Style TargetType="ToolTip">
<Style.Triggers>
<DataTrigger Binding="{Binding Content, RelativeSource={RelativeSource Self}, Converter={StaticResource EmptyToolTipToBooleanConverter}}" Value="True">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<TextBlock Text="This TextBlock has ToolTip" ToolTip="Almafa"></TextBlock>
<TextBlock Text="This TextBlock has ToolTip with whitespaces" ToolTip=" "></TextBlock>
<TextBlock Text="This TextBlock has ToolTip with empty string" ToolTip="{x:Static system:String.Empty}"></TextBlock>
</StackPanel>
</Window>
请注意,工具提示可以有任何自定义内容,而不仅仅是字符串
。
例如:
<TextBlock Text="This TextBlock has a complex ToolTip">
<TextBlock.ToolTip>
<StackPanel>
<TextBlock Text="First line"></TextBlock>
<TextBlock Text="Second line"></TextBlock>
</StackPanel>
</TextBlock.ToolTip>
</TextBlock>
此转换器显示这些工具提示
<Window x:Class="HideEmptyToolTipsWithTrigger.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:HideEmptyToolTipsWithTrigger"
xmlns:system="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:EmptyToolTipToBooleanConverter x:Key="EmptyToolTipToBooleanConverter" />
<Style TargetType="ToolTip">
<Style.Triggers>
<DataTrigger Binding="{Binding Content, RelativeSource={RelativeSource Self}, Converter={StaticResource EmptyToolTipToBooleanConverter}}" Value="True">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<TextBlock Text="This TextBlock has ToolTip" ToolTip="Almafa"></TextBlock>
<TextBlock Text="This TextBlock has ToolTip with whitespaces" ToolTip=" "></TextBlock>
<TextBlock Text="This TextBlock has ToolTip with empty string" ToolTip="{x:Static system:String.Empty}"></TextBlock>
</StackPanel>
</Window>
public class EmptyToolTipToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var contentAsString = value as string;
if (contentAsString != null)
{
return string.IsNullOrEmpty(contentAsString.Trim());
}
else
{
return false;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<TextBlock Text="This TextBlock has a complex ToolTip">
<TextBlock.ToolTip>
<StackPanel>
<TextBlock Text="First line"></TextBlock>
<TextBlock Text="Second line"></TextBlock>
</StackPanel>
</TextBlock.ToolTip>
</TextBlock>