C#WPF工具提示未显示在子网格上

时间:2011-05-24 06:23:54

标签: wpf tooltip

出于某种原因,工具提示不会显示在我的子网格中。

<Grid DockPanel.Dock="Top"
    Width="300px"
    Height="250px"
    ToolTipService.ToolTip="MainGrid Tooltip">
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="1.25*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
        ToolTip="mygrid tooltip 2">
    <StackPanel Orientation="Horizontal">
        <Image Width="15"
                Source="<<INSERT IMAGE FILE LOCATION HERE>>" 
                ToolTipService.ToolTip="Child Grid Tooltip 1"/>
        <TextBlock Width="80"
                Text="Random Text 2"
                ToolTipService.ToolTip="Child Grid Tooltip 2"/>
        <TextBlock Width="80" 
                Text="Random Text 3"
                ToolTipService.ToolTip="Child Grid Tooltip 3"/>
    </StackPanel>

</Grid>

我一直在显示“mygrid工具提示2”,即使我已经覆盖了它的孩子的工具提示 - 它也不会显示。

我已经减少了在资源词典中使用控件模板的复杂性,直到我现在只剩下上面的内容,但仍然没有。

任何想法都将受到高度赞赏,也许我可以阅读它的链接。我的WPF书和msdn目前没有产生任何相关的资金。

谢谢,

2 个答案:

答案 0 :(得分:11)

为了使WPF中的某些内容能够显示工具提示,必须在命中测试时才能看到它。

在面板的情况下,这是通过将背景颜色设置为null以外的值来完成的(这是所有面板的默认值)。如果您希望自己的面板不可见但仍有资格进行点击测试,则可以使用Transparent作为背景颜色。

<Grid Background="Transparent" ToolTip="This Will Be Shown">
    <!-- other stuff -->
</Grid>

<Grid ToolTip="This Will NOT Be Shown">
    <!-- other stuff -->
</Grid>

答案 1 :(得分:1)

@Isak,谢谢你,Background="Transparent"协助了我的最终解决方案。

我最终抛弃了定义了行/列的Grid,并使用了嵌套StackPanels的Grid。

以前Grid.Rows正在由ContentControls填充,我将其替换为包含我需要显示的信息的本地Stackpanels,这似乎解决了它,但只有在我将“Transparent”标签添加到stackpanels之后一个

IsHitTestVisible="False"

在父网格中用作背景图像的图像上。

以下是我当前解决方案的一个示例,第二部分取代了原始帖子中的代码。

首先,在获得相关代码之前的基本源文件布局如下所示:

<ResourceDictionary xmlns="...
  <DataTemplate DataType="...
    <Grid Style="...
      <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto"/>
          <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

       <Grid Name="LeftColumn" Grid.Column="0">
         <TextBlock Style="{StaticResource TextHeader}"
                    Text="Review 10 Patients"/>

         <Image RenderOptions.BitmapScalingMode="NearestNeighbor"
                SnapsToDevicePixels="True"
                Stretch="None"
                DockPanel.Dock="Top"
                IsHitTestVisible="False"
                Source="((INSERT IMAGE HERE))" Margin="0,-2,0,10"/>

然后我的解决方案网格如下[替换初始邮政编码]:

       <StackPanel>

         <StackPanel Background="Transparent" Orientation="Horizontal">
           <Image Style="{StaticResource InfoImage}" Margin="3">
             <ToolTipService.ToolTip>
               <ToolTip Width="200" Style="{StaticResource ToolTip}"
                        Content="ToolTip 1"/>
             </ToolTipService.ToolTip>
           </Image>

           <TextBlock Width="140" Style="{StaticResource Text_SelfTitle}"
                      Text="Text Field 1"/>
           <TextBlock Width="145" Style="{StaticResource Text_SelfQuestions}"
                      Text="Text Field 2"/>
         </StackPanel>

         <StackPanel Background="Transparent" Orientation="Horizontal">
            ((... similar as above...))
         </StackPanel>

         <StackPanel Background="Transparent" Orientation="Horizontal">
            ((... similar as above...))
         </StackPanel>

       </StackPanel>
     </Grid>
  </Grid>

希望这有助于其他人体验类似的东西。