我在选项卡上的画布中有一个网格。 网格包含一个大的位图图像, 我(尝试)将网格的大小绑定到选项卡的大小,并且在网格周围也有一个5像素的边距。
imageTab.cs
public ImageTab(SendInfo sendInfo, int numImge, int numAccs)
{
imageDisplay = new ImageDisplay(sendInfo, numImge, numAccs);
imageDisplay.ClipToBounds = true;
CreateCanvas();
}
private void CreateCanvas()
{
Canvas canvas = new Canvas();
canvas.Children.Add(imageDisplay);
this.AddChild(canvas);
}
ImageDisplay.xaml
<UserControl x:Class="MyProj.ImageDisplay">
<Grid Margin="5,5,5,5" Height="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TabControl, AncestorLevel=1}, Path=ActualHeight}">
<Image/>
</Grid>
</UserControl>
网格从标签区域的底部脱落,略微导致图像底部被切断。 我的数据绑定是否有问题,是否需要对其应用某种偏移? (标签的大小 - 保证金的10个像素?)
答案 0 :(得分:1)
你根本不需要设置Height属性(当你考虑5像素边距时,也会发现这样做是不正确的,即它会偏离10像素)。
只需将VerticalAlignment
和HorizontalAlignment
保留为默认值(Stretch
),即可获得此后的效果。
在新的Window
上试试看我的意思:
<Window x:Class="WpfApplication9.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="438" Width="587" Background="Pink">
<Grid Background="Black" Margin="5">
</Grid>
</Window>
此处的网格将为黑色,并且将始终拉伸至窗口大小,使用5像素边距,您将看到,因为窗口的背面颜色为粉红色。