Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf 定义在转换器(工具提示)返回fale时隐藏工具提示的工具提示样式_Wpf_Xaml_Binding_Styles_Tooltip - Fatal编程技术网

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>