我有一个WPF
应用程序,用于检查某个父目录中的新图像,如果有新图像,则会切换当前显示的图像(我有6张图像)。
我想添加一个功能,允许用户点击其中一个图像,然后点击,将出现一个“新”窗口,显示图像放大,屏幕上任何位置的另一次点击将退出这个放大并将焦点放回到其他(6)图像。
这可能吗?我尝试使用Google搜索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>
答案 0 :(得分:7)
正如评论中提到的那些人,最好的办法是使用ToolTip
弹出全尺寸图像。数据绑定Image.Source
中Image
的{{1}}值存在轻微问题,因为它们不属于普通的UI可视树,而是存在于自己的树中。但是,我们可以使用ToolTip.PlacementTarget
property:
ToolTip
当然,你可以在两个<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
,但我从不喜欢重复代码。