0

我有一个DataTemplate用于 a 中项目的 a 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控件的尺寸动态调整到内部的图像?这可能吗?

4

1 回答 1

1

只需更改RenderTranformLayoutTransform并且不绑定Widthor Height。工具提示窗口将自动适应大小。

<Image.ToolTip>
    <ToolTip>  
        <Image Source="{Binding FileNameForThumbnailDisplay}" Margin="4">
            <Image.LayoutTransform> 
                <ScaleTransform ScaleX="0.5" ScaleY="0.5"/> 
            </Image.LayoutTransform> 
        </Image>
    </ToolTip>
</Image.ToolTip>  
于 2012-08-02T10:54:06.117 回答