如何在 WPF C# 中设置与父控件相同的工具提示字体
How to set the font of a ToolTip same as parent control in WPF C#
我有很多字段使用了不同的字体。当我将鼠标悬停在某个字段上时,它始终显示具有默认字体的工具提示。
但是我想将 ToolTip 字体设置为与鼠标悬停在其上的字段相同。
我该怎么做?
工具提示的样式如下:
<Style TargetType="ToolTip">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
MaxWidth="400"
TextWrapping='Wrap' />
</DataTemplate>
</Setter.Value>
</Setter>
<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>
这里是XAML的主要内容:
<TextBox Text="Hello there!"
FontFamily="Cambria"
ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" />
此方法有效 generic
:
<Style TargetType="ToolTip">
<Setter Property="FontFamily" Value="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.FontFamily}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
MaxWidth="400"
TextWrapping='Wrap' />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
预览
您可以使用此代码,但它仅适用于 TextBox
。
<DataTemplate>
<TextBlock Text="{Binding}"
MaxWidth="400"
FontFamily="{Binding FontFamily, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}}"
TextWrapping='Wrap' />
</DataTemplate>
ToolTip 具有 PlacementTarget
属性(UIElement,它是 ToolTip 控件(TextBox、TextBlock 等)的逻辑父级)。创建绑定到 PlacementTarget.FontFamily
的 FontFamily
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
FontFamily="{Binding RelativeSource={RelativeSource AncestorType=ToolTip}, Path=PlacementTarget.FontFamily}"
MaxWidth="400"
TextWrapping='Wrap' />
</DataTemplate>
</Setter.Value>
</Setter>
我有很多字段使用了不同的字体。当我将鼠标悬停在某个字段上时,它始终显示具有默认字体的工具提示。
但是我想将 ToolTip 字体设置为与鼠标悬停在其上的字段相同。
我该怎么做?
工具提示的样式如下:
<Style TargetType="ToolTip">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
MaxWidth="400"
TextWrapping='Wrap' />
</DataTemplate>
</Setter.Value>
</Setter>
<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>
这里是XAML的主要内容:
<TextBox Text="Hello there!"
FontFamily="Cambria"
ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" />
此方法有效 generic
:
<Style TargetType="ToolTip">
<Setter Property="FontFamily" Value="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.FontFamily}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
MaxWidth="400"
TextWrapping='Wrap' />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
预览
您可以使用此代码,但它仅适用于 TextBox
。
<DataTemplate>
<TextBlock Text="{Binding}"
MaxWidth="400"
FontFamily="{Binding FontFamily, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}}"
TextWrapping='Wrap' />
</DataTemplate>
ToolTip 具有 PlacementTarget
属性(UIElement,它是 ToolTip 控件(TextBox、TextBlock 等)的逻辑父级)。创建绑定到 PlacementTarget.FontFamily
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
FontFamily="{Binding RelativeSource={RelativeSource AncestorType=ToolTip}, Path=PlacementTarget.FontFamily}"
MaxWidth="400"
TextWrapping='Wrap' />
</DataTemplate>
</Setter.Value>
</Setter>