这是我在stackoverflow上的第一篇文章,我是xaml和wpf的新手。
我有一个我正在处理的自定义控件,我想添加一个工具提示,可以在声明控件时设置。我已经设法得到工具提示以我希望它使用样式模板的方式工作,如下所示,但是即使我没有文本设置,我也会出现工具提示出现问题。
我试图删除下面代码段中的任何代码,只留下与工具提示有关的代码。
<Style TargetType="{x:Type local:MetroButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MetroButton}">
<Grid x:Name="LayoutRoot" Margin="0" Width="{TemplateBinding BtnWidth}" Height="{TemplateBinding BtnHeight}" Background="{TemplateBinding Background}">
<Grid.ToolTip>
<Border
BorderBrush="{TemplateBinding TooltipBorderColour}"
Background="{TemplateBinding TooltipBackground}"
BorderThickness="{TemplateBinding TooltipBorderThickness}"
CornerRadius="{TemplateBinding TooltipCornerRadius}"
>
<StackPanel>
<TextBlock
Text="{TemplateBinding TooltipText}"
Foreground="{TemplateBinding TooltipFontColour}"
FontStyle="{TemplateBinding TooltipFontStyle}"
FontFamily="{TemplateBinding TooltipFontFamily}"
FontSize="{TemplateBinding TooltipFontSize}"
FontWeight="{TemplateBinding TooltipFontWeight}"
Margin="{TemplateBinding TooltipTextMargin}"
>
</TextBlock>
</StackPanel>
</Border>
</Grid.ToolTip>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="TooltipText" Value="">
<Setter Property="ToolTipService.IsEnabled" Value="False"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:1)
您无需将ToolTip
定义为:ToolTipService.ToolTip
,然后添加触发器以禁用它,ToolTip
已经在后台执行所有逻辑。
直接在网格上声明您的ToolTip
,如下所示:
<Grid>
<Grid.ToolTip>
Add your tool tip stuff here...
</Grid.ToolTip>
</Grid>
修改强> 将您的触发器更改为:
<Trigger Property="TooltipText" Value="">
<Setter TargetName="LayoutRoot" Property="ToolTip" Value="{x:Null}"/>
</Trigger>
当文本为“”时,这将强制网格删除ToolTip
。