在WPF标签中ToolTip无法显示?

5

在应用程序中,我正在尝试在标签控件上设置工具提示。 请查看详细的XAML,如果可能,请建议修复问题。 到目前为止,我已经尝试了许多技巧(例如IsEnabled,IsHitTestVisible,控件模板,背景设置...),但未能显示工具提示。

<UserControl x:Class="HSDLAdminPortal.Forms.Application.ApplicationDetailForm"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit"             
         xmlns:local="clr-namespace:HSDLAdminPortal.Forms.Application"
         mc:Ignorable="d" Width="1290" Height="595"
         xmlns:gif="http://wpfanimatedgif.codeplex.com"              
         xmlns:name="UserControl"
         >
<UserControl.Resources>
    <Style x:Key="LabelInfoStyle" TargetType="{x:Type Label}">
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="Foreground" Value="Black"/>
    </Style>
    <Style x:Key="LabelInfoValueStyle" TargetType="{x:Type Label}">
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="Foreground" Value="#999966"/>
    </Style>
    <Style x:Key="LabelInfoHeaderStyle" TargetType="{x:Type Label}">
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="Foreground" Value="White"/>
    </Style>
</UserControl.Resources>
<Grid Margin="4" Background="Transparent">
    <Grid.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#e6eeff" Offset="1" />
            <GradientStop Color="#FFF5F2EF" Offset="0" />
        </LinearGradientBrush>
    </Grid.Background>
    <Grid.Resources>
        <ResourceDictionary Source="/Resources/CustomAccordion.xaml"/>
    </Grid.Resources>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,-10,730,0" Background="Transparent" Panel.ZIndex="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <StackPanel>
            <GroupBox Header=""  Margin="0,4,10,4" Height="540" HorizontalAlignment="Right" Width="532">
                <Canvas Margin="0,0,0,1">
                    <Rectangle HorizontalAlignment="Left" Height="19" Stroke="White" VerticalAlignment="Top" Width="493" Canvas.Left="17" Canvas.Top="201">
                        <Rectangle.Fill>
                            <LinearGradientBrush  EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="LightGray" Offset="1" />
                                <GradientStop Color="LightGray" />
                                <GradientStop Color="White" Offset="0.5" />
                            </LinearGradientBrush>
                        </Rectangle.Fill>
                    </Rectangle>
                    <Rectangle Fill="Transparent" HorizontalAlignment="Left" Height="295" Stroke="Gray" VerticalAlignment="Top" Width="493" Canvas.Left="17" Canvas.Top="219"/>
                    <Image Stretch="Fill"  x:Name="ImagePhoto" HorizontalAlignment="Left" VerticalAlignment="Top" Height="123"  Width="120" Source="/HSDLAdminPortal;component/Resources/photo_test.png" Canvas.Top="3" Canvas.Left="37"/>
                    <Label x:Name="LblPhoto" Content="Photo" HorizontalAlignment="Left" Background="Transparent"  VerticalAlignment="Top" FontSize="10" FontWeight="Bold" Height="22" Width="62" Canvas.Top="124" Canvas.Left="75"/>
                    <Border BorderBrush="Black" BorderThickness="1" Height="128" Canvas.Left="37" Canvas.Top="1" Width="119"/>
                    <Rectangle Height="22" Canvas.Left="221"  Canvas.Top="1" Width="289">
                        <Rectangle.Fill>
                            <LinearGradientBrush  EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="LightGray" Offset="1" />
                                <GradientStop Color="LightGray" />
                                <GradientStop Color="White" Offset="0.5" />
                            </LinearGradientBrush>
                        </Rectangle.Fill>
                    </Rectangle>
                    <Rectangle Fill="Transparent" HorizontalAlignment="Left" Height="163" Stroke="White" VerticalAlignment="Top" Width="289" Canvas.Left="221" Canvas.Top="23"/>
                    <Label x:Name="LblMiscellaneous" Style="{DynamicResource LabelInfoHeaderStyle}" Foreground="Black" Content="Miscellaneous" Background="Transparent" Canvas.Left="342" Canvas.Top="-1" Height="28" FontWeight="ExtraBold"/>
                    <Label x:Name="LblPersonalInfo" Style="{DynamicResource LabelInfoHeaderStyle}" Content="Personal Info" Foreground="Black" Background="Transparent" Canvas.Left="221" Canvas.Top="195" Height="54" Width="125" FontWeight="ExtraBold"/>

                    <Label x:Name="LblApplicantType" ToolTip="text tooltip" Style="{DynamicResource LabelInfoStyle}" Content="Applicant Type : " Background="Transparent" Canvas.Left="231" Canvas.Top="40" FontWeight="Bold"/>
                    <Label x:Name="LblApplicantTypeValue" Style="{DynamicResource LabelInfoValueStyle}" Content="N/A" Background="Transparent" Canvas.Left="360" Canvas.Top="40"  FontWeight="Bold"/>

                    <Label x:Name="LblApplicantNameValue" Style="{DynamicResource LabelInfoValueStyle}" ToolTip="Sample ToolTip" Content="N/A" ToolTip="Sample ToolTip" Background="Transparent" Canvas.Left="190" Canvas.Top="220"  FontWeight="Bold"/>
                    <Image x:Name="ImageSignature" HorizontalAlignment="Left" VerticalAlignment="Top" Height="37"  Width="97" Source="/HSDLAdminPortal;component/Resources/signature.png" Canvas.Top="149" Canvas.Left="52"/>
                    <Border BorderBrush="Black" BorderThickness="1" Height="44" Canvas.Left="37" Canvas.Top="142" Width="119"/>
                    <Label x:Name="LblSignature" Content="Signature" HorizontalAlignment="Left" Background="Transparent"  VerticalAlignment="Top" FontSize="10" FontWeight="Bold" Height="36" Width="62" Canvas.Top="181" Canvas.Left="69"/>
                    <Canvas x:Name="AttachmentDetailsCanvas" Width="520" Height="501"  Visibility="Visible" Opacity="0">
                        <Canvas.Background>
                            <LinearGradientBrush  EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="LightGray" Offset="1" />
                                <GradientStop Color="LightGray" />
                                <GradientStop Color="White" Offset="0.5" />
                            </LinearGradientBrush>

                        </Canvas.Background>

                        <Rectangle Height="45" Canvas.Left="0"  Canvas.Top="1" Width="520">
                            <Rectangle.Fill>
                                <LinearGradientBrush  EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="LightGray" Offset="1.2" />
                                    <GradientStop Color="LightGray" />
                                    <GradientStop Color="#0077b3" Offset="0" />
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>
                        <Label x:Name="attachmentDetails" Content="Attachment Details" Foreground="White"  Background="Transparent" FontSize="20"  VerticalAlignment="Top"  FontWeight="Bold" Height="36" Width="220" Canvas.Top="4" Canvas.Left="143" />

                        <Image Source="/Resources/Images/attachment.png" Height="400" Width="510" Canvas.Top="86" x:Name="atcImg"/>
                        <Button ToolTip="Click To Hide Image" x:Name="hideImageButtonButton" Width="42" Height="42" Click="hideImageButton_Click" Canvas.Left="478" Canvas.Top="1">
                            <StackPanel Orientation="Horizontal">
                                <Image x:Name="close_image" HorizontalAlignment="Center" VerticalAlignment="Center" Source="/Resources/hide.png" Height="42" Width="42" OpacityMask="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Stretch="UniformToFill" />
                            </StackPanel>
                        </Button>
                    </Canvas>
                </Canvas>
            </GroupBox>
        </StackPanel>
    </Grid>

</Grid>

enter image description here


如果我移除样式,工具提示就能正常工作。请检查您的样式是否对工具提示产生了影响。 - Josep B.
你本地的样式声明优先于你的工具提示属性,为了能够帮助你得到想要的结果,请向我们展示资源。 - JohnChris
@JosepB。我已经删除了样式,但它仍然无法工作。:( - Ghost Developer
@GhostDeveloper,还是不行吗?它被启用了吗? - JohnChris
@Ghost,我的解决方案有效吗? - JohnChris
显示剩余5条评论
3个回答

3

显式样式。Style属性直接设置。在大多数情况下,样式不是内联定义的,而是通过显式密钥引用作为资源。在这种情况下,Style属性本身就像本地值一样起作用,优先级项目3。

MSDN关于优先级的网站。

由于Style被设置为本地值,因此它比下一个本地值具有优先权。

将Tooltip添加到您的样式中,并添加所需的文本,以使其与动态资源配合使用。

更新

查看您的代码后,很明显您的标签只被透明网格覆盖,因此您的鼠标悬停永远不会真正悬停在它上面。 请将Panel.ZIndex =“1”放置并使其在所有内容之前工作,这样可以将标签提到最前面。

如果您计划使用多个zindex来克服问题,则建议查看MSDN网站以了解更多信息。

https://msdn.microsoft.com/en-us/library/system.windows.controls.panel.zindex(v=vs.110).aspx

  <Label x:Name="LblApplicantNameValue" Panel.ZIndex="1" Style="{DynamicResource LabelInfoValueStyle}" ToolTip="Sample ToolTip" Content="this label now works"  Background="Transparent" Canvas.Left="360" Canvas.Top="66"  FontWeight="Bold"/>

申请人姓名标签的提示已设置两次。 - JohnChris
@GhostDeveloper。我在上面的回答中解决了你的问题,请在它正常工作时将其标记为正确:)(绿色勾号) - JohnChris
我很感激你的努力,但不幸的是它还没有起作用。 与此同时,我找到了解决方案。 “attachment.png”被放置在标签的相同位置,这就是为什么它不起作用。谢谢 :) - Ghost Developer
1
好的,我必须删除PNG文件才能运行代码,因为我没有资源,但是找到了一个类似的问题,可能是某些东西遮盖了标签。 - JohnChris

0

0
以下图像的位置(attachment.png)与标签放置在同一位置,但由于父控件的不透明度为0而未显示。现在我使用图像的可见性代替不透明度,这解决了我的问题。谢谢大家。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接