工具提示未显示在WPF标签中?

时间:2016-11-22 10:55:31

标签: c# wpf

在应用程序中,我正在尝试在Label控件上设置工具提示。 请查找详细信息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

3 个答案:

答案 0 :(得分:3)

  

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

MSDN网站优先。

由于Style设置为本地值,因此它优先于下一个本地值。

将“工具提示”添加到您的样式中,并添加所需的文本以使其与动态资源配合使用

<强>更新

在查看您的代码之后,很明显您的标签只是被透明网格所覆盖,因此您的鼠标悬停从未真正覆盖它。 Put,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"/>

答案 1 :(得分:0)

您可以通过覆盖ToolTip控件的模板来设置工具提示的样式,如问题How to style WPF tooltip like a speech bubble?

中所做的那样

答案 2 :(得分:0)

以下图像(attachment.png)的位置放置在标签的相同位置,但由于0不透明度(在父控件处)而未显示。现在我使用图像的可见性而不是Opacity&amp;它解决了我的问题。谢谢大家。