我想要一个图像作为网格的背景 . 默认情况下,图像应该是右对齐和底对齐的 . 图像也应均匀地拉伸到容器的高度 . 但是,如果容器调整大小使得宽度比图像的大小更薄,则图像开始调整大小以变小 . 而不是发生这种情况,我想剪辑图像,使右边的部分开始隐藏 .
这是我的图像XAML现在:
<Image Source="blahblah.png"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Stretch="Uniform" />
这是我想要在图片中描述的行为(黑色边框是容器大小):
3 回答
尝试混合使用不同的面板,如下所示:
在这里,我们将图像放在水平(和右对齐)
StackPanel
中 . 默认情况下,StackPanel会垂直拉伸,StackPanel的一个功能是告诉它的子项目它们具有无限宽度 . 因此,Image
始终呈现为尽可能高 .接下来,我们有一个"backgroundSpacer",它通常在整个容器网格中延伸,但是通过
MinWidth
绑定,我们确保它总是足够宽以包含整个图像 . 如果"mainGrid"太薄,"backgroundSpacer"会被剪裁,而WPF的默认剪切行为会从右侧剪切掉 .我没有看到一种方法,只是设置一些“魔术”属性 . 我将实现一个托管您的图像并管理所需行为(缩放和定位)的面板 . 这就是面板的样子:
用这种方式:
你有没有尝试使用ViewBox元素?将它放在仅定义了MaxWidth / Width的Parent上,并将ClipToBounds设置为True . 有关此控件的更多信息(当我们谈论调整大小时,这有很多帮助):
http://msdn.microsoft.com/pt-br/library/system.windows.controls.viewbox(v=vs.110).aspx