2013-03-05 69 views
0
<Label.ToolTip> 
    <StackPanel Name="tTipTxt">          
     <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal"> 
      <TextBlock TextWrapping="Wrap" FontFamily="Times New Roman" FontSize="15" Foreground="Black" TextAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left"> 
       <Run Text="" Name="tTipBody"/> 
      </TextBlock> 
     </StackPanel> 
    </StackPanel> 
</Label.ToolTip> 

这是ToolTip当我的鼠标超过Label时,我想显示这个值。如果ToolTip文本为空或空,我如何创建Trigger以阻止ToolTip显示自身?嵌套元素的触发器

我已经试过这件XAML:

<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> 

但我仍然需要进入最深的堆栈,以获得正确的目标文本变化。你能帮助添加一些更多的步骤为我完成这件事吗?

+3

您需要为'ToolTip'使用'ControlTemplate',然后你可以使用'SourceName's和你的'Setter'''使用'TargetName'设置你的'Triggers'。 – 2013-03-05 19:37:24

+1

或者您可以使用'DataTrigger'并使用'ElementName'绑定绑定到目标 – 2013-03-05 19:44:05

回答

0

,您可以拨打StyleLabel,使用AttachedPropertyToolTipService.IsEnabled

例禁用ToolTip

<Style TargetType="Label"> 
    <Setter Property="ToolTipService.IsEnabled" Value="True" /> 
    <Style.Triggers> 
     <Trigger Property="Content" Value=""> 
      <Setter Property="ToolTipService.IsEnabled" Value="False" /> 
     </Trigger> 
     <Trigger Property="Content" Value="{x:Null}"> 
      <Setter Property="ToolTipService.IsEnabled" Value="False" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

这将隐藏在LabelToolTip当标签ContentNullEmpty