2011-05-24 85 views
4

由于某些原因,工具提示不会显示在我的子网格中。C#WPF工具提示未显示在子网格上

<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目前没有生成任何多余的资金。

感谢,

+0

我试过了你的代码,我没有发现任何问题。工具提示显示为意图。图像和文本控件显示各自的工具提示 – biju 2011-05-24 06:41:40

+0

我重新检查了源文件,发现我忘记提及源xaml作为“ResourceDictionary”启动,并且页面本身是“DataTemplate”,不知道是否应该重要,显然它确实如此。 后端框架被设计为使用这些数据模板并生成所需的页面,除了子子网格之外,其完美地工作。 <资源字典> <电网Grid.Row = “1”> <电网提示=工作> <网格工具提示=没有工作> – Neville 2011-05-25 00:16:03

回答

1

@Isak,谢谢,您的Background="Transparent"辅助我的最终解决方案。

我最终扔掉了已定义的行/列的网格,并采用了嵌套StackPanels的网格。

之前GridController被ContentControls填充,我用本地的Stackpanels取代了这个,它包含我需要显示的信息并且似乎已经解决了这个问题,但只是在向StackPanel添加了“Transparent”标记之后,还有一个

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> 

希望这可以帮助别人你应该体验类似的东西。

9

为了让东西在WPF能够显示工具提示,它必须是可见的命中测试。

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

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

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

伊萨克感谢,我已经试过你提出的后台方法上面没有成功,我甚至将其更改为红色,显示确切的网格行,但仍然没有工具提示。叹。我已经在biju留言了一些额外的细节,可能会影响它吗? – Neville 2011-05-25 00:19:26