2

我有一个WPF应用程序检查某个父目录中的新图像,如果有新图像,它会切换当前显示的图像(我有 6 个图像)。

我想添加一个功能,允许用户单击其中一个图像,单击后,将出现一个“新”窗口,显示该图像已放大,并且在屏幕上的任何位置再次单击将退出此放大和将焦点放回其他 (6) 图像。

那可能吗?我尝试了谷歌搜索zoom image wpf,但只找到了mouse-drag相关的解决方案。

我也尝试过使用viewport,但效果也不太好。

更新 - XAML

<Grid Grid.Row="0">
        <GroupBox  x:Name="AccuracyGraphsGroupBox" Header="Accuracy" Foreground="Red">
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0.5*" />
                    <ColumnDefinition Width="0.5*" />
                </Grid.ColumnDefinitions>
                <Image Grid.Column="0" Width="Auto" Height="Auto" Stretch="Fill" x:Name="AccuracyPicBox" MouseUp="AccuracyPicBox_OnMouseUp"></Image>
                <Image Grid.Column="1" Width="Auto" Height="Auto" Stretch="Fill" x:Name="AccuracyPerioPicBox" MouseUp="AccuracyPerioPicBox_OnMouseUp"></Image>
            </Grid>
        </GroupBox>
    </Grid>
4

1 回答 1

7

正如评论中提到的那些人,你最好的选择是使用 aToolTip来弹出你的全尺寸图像。数据绑定你Image.Source的原始值有一个小问题,因为它们不是普通 UI 可视化树的一部分,而是存在于它们自己的树中。但是,我们可以通过使用属性来克服这个问题:ImageToolTipToolTip.PlacementTarget

<Image Name="Image" Source="/WpfApplication1;component/Images/Tulips.jpg" Height="100"
    Stretch="Uniform">
    <Image.ToolTip>
        <ToolTip DataContext="{Binding PlacementTarget, 
            RelativeSource={RelativeSource Self}}">
            <Border BorderBrush="Black" BorderThickness="1" Margin="5,7,5,5">
                <Image Source="{Binding Source}" Stretch="None" />
            </Border>
        </ToolTip>
    </Image.ToolTip>
</Image>

当然,您可以Binding Path在两个Image.Source属性中使用相同的,但我从不喜欢重复代码。

于 2014-06-29T15:41:28.003 回答