将鼠标悬停在按钮内容上时,工具提示会显示不同的文字

时间:2017-12-12 09:05:10

标签: wpf xaml styles tooltip staticresource

我处于一种情况,我有按钮并将样式设置为此按钮的静态资源(此处为CreateNewItemButtonStyle)。 我还有一个工具提示,只要我将鼠标悬停在此工具提示上,我就会显示一些文字(" SelectAllLines" here)。 当我将鼠标悬停在按钮区域上时,它会正确地显示工具提示文本,不包括内容区域(我的意思是当我将鼠标悬停在内容上时#34; AL"它显示" AL"在工具提示中,它应该'这样做,它应该表明 只有" SelectAllLines"在整个按钮区域工具提示)。

我发现这是因为我正在使用的风格。

但是如何在我的整个按钮区域上的工具提示上有相同的文字,我通过做ToolTip ="选择的行"

<Button
    x:Name="AllLinesButtonX"
    Background="{StaticResource FlowPowderBlackBrush}"
    Click="AllLinesButtonX_OnClick"
    Command="{Binding AllLinesCommand}"
    Content="AL"
    MouseRightButtonUp="SelectGeometryToggleButton_OnMouseRightButtonUp"
    Style="{StaticResource CreateNewItemButtonStyle}"  //If i remove this line it stops showing "AL", just shows "SelectedAllLines" which is the correct behavior
    ToolTip="SelectAllLines"
</Button>

这是风格的关键:

 <Style x:Key="CreateNewItemButtonStyle" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisualStyle}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="TextBlock.FontSize" Value="10" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="Button">
            <Border
                Background="{TemplateBinding Background}"
                BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}"
                SnapsToDevicePixels="True">
                <ContentPresenter
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Content="{TemplateBinding Content}"
                    TextBlock.TextAlignment="Center" />
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>
<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Background" Value="{StaticResource ActiveButtonBrush}" />
        <Setter Property="BorderBrush" Value="{StaticResource ActiveBorderBrush}" />
    </Trigger>
    <Trigger Property="IsPressed" Value="True">
        <Setter Property="Background" Value="{StaticResource ActiveButtonBrush}" />
        <Setter Property="BorderBrush" Value="{StaticResource ActiveBorderBrush}" />
    </Trigger>
    <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Cursor" Value="Arrow" />
    </Trigger>
</Style.Triggers>

1 个答案:

答案 0 :(得分:0)

IsHitTestVisible="false"设置为按钮样式的ContentPresenter中的ControlTemplate

更多信息:https://msdn.microsoft.com/en-us/library/system.windows.uielement.ishittestvisible(v=vs.110).aspx