2012-08-02 39 views
0

我有一个DataTemplate我用ListBox(网格的第一列显示一个图标取决于文件扩展名,第二列包含文件名)的项目:转换器没有输入图像的工具提示

<DataTemplate x:Key="ListItemTemplate"> 
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="16"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition></RowDefinition> 
    </Grid.RowDefinitions> 
    <Image Source="{Binding Icon}" Grid.Column="0" Grid.Row="0" Width="16" Height="16"> 
     <Image.ToolTip> 
      <ToolTip Width="{Binding Path=ActualWidth, ElementName=ToolTipImage, Converter={StaticResource toolTipImageConverter}}" Height="{Binding Path=ActualHeight, ElementName=ToolTipImage, Converter={StaticResource toolTipImageConverter}}"> 
       <Image Source="{Binding FileNameForThumbnailDisplay}" Name="ToolTipImage"> 
        <Image.RenderTransform > 
         <TransformGroup> 
          <ScaleTransform ScaleX="0.5" ScaleY="0.5"></ScaleTransform> 
         </TransformGroup> 
        </Image.RenderTransform> 
       </Image> 
      </ToolTip> 
     </Image.ToolTip> 
    </Image> 
    <Label Content="{Binding FileNameWithExtension, Mode=OneWay}" Grid.Column="1" Grid.Row="0" BorderBrush="Transparent" Height="Auto"></Label> 
</Grid> 

我想显示一个ToolTip含有悬停在第一列的图标时缩小Image。这是有效的,但是我想实现的还是根据缩小的图像的尺寸例如缩小显示图像的ToolTip。是这样的:在列表框中

图片ABC:在列表框中

+--ToolTip-------+ 
|+-Scaled-Image-+| 
||    || 
||    || 
|+--------------+| 
+----------------+ 

图片XYZ:

+--ToolTip-----------------+ 
|+-Scaled-Image-----------+| 
||      || 
||      || 
|+------------------------+| 
+--------------------------+ 

我写了一个Converter返回ActualWidth(渲染Image元素)设置尺寸,但转换器从不输入。

我需要我可以提供用于Converter的代码,但是,我不认为它是相关的,因为它没有进入(调试过程中的中断点从未命中)。

我该如何实现ToolTip控件的尺寸可以动态调整到图像内?这可能吗?

+0

在输出窗口中是否有任何绑定异常? – dvvrd 2012-08-02 10:40:42

+0

不,也检查了他们,但没有。 – Gorgsenegger 2012-08-02 12:23:51

回答

1

只需将RenderTranform更改为LayoutTransform并且不绑定WidthHeight。工具提示窗口将自动适合尺寸。

<Image.ToolTip> 
    <ToolTip> 
     <Image Source="{Binding FileNameForThumbnailDisplay}" Margin="4"> 
      <Image.LayoutTransform> 
       <ScaleTransform ScaleX="0.5" ScaleY="0.5"/> 
      </Image.LayoutTransform> 
     </Image> 
    </ToolTip> 
</Image.ToolTip> 
+0

谢谢,作品款待:-) – Gorgsenegger 2012-08-02 12:24:46