防止图像拉伸超出实际尺寸

时间:2015-09-15 16:52:27

标签: xaml winrt-xaml windows-10 uwp

我有一个绑定到源的Image控件。这就是我想要的:

  • 如果源图像小于包含它的网格,则应以原始大小显示。它不应超过100%。这是设置Stretch="None"
  • 的行为
  • 如果源图像大于父网格,则应均匀调整大小以适合容器。 {O-1}}可以使用此行为。

我尝试将MaxWidth和MaxHeight绑定到父级的实际尺寸,如下所示:

Stretch="Uniform"

但是,我最终根本没有图像。从背景颜色可以看出,父网格占据了所有可用空间。但是没有形象。

有没有办法实现我想要的行为?

1 个答案:

答案 0 :(得分:6)

将图像置于Viewbox控件中,并将Viewbox的StretchDirection设置为DownOnly。 Viewbox的Stretch属性的默认值为Uniform,因此您无需进行设置。

<Viewbox StretchDirection="DownOnly">
    <Image Source="{Binding Link}" Stretch="None"/>
</Viewbox>

也许值得注意的是,在WPF中你可以直接设置Image控件的StretchDirection,因此不需要Viewbox。

<Image Source="{Binding Link}" StretchDirection="DownOnly"/>