将图像大小与另一个图像大小绑定

时间:2014-03-21 14:49:08

标签: c# xaml windows-store-apps

我正在使用C#和.NET Framework 4.5.1开发Windows 8.1商店应用程序。

<Border x:Name="Border00" BorderBrush="Black" BorderThickness="2" HorizontalAlignment="Center" Margin="10,10,10,5" VerticalAlignment="Center" Canvas.ZIndex="1">
    <Image x:Name="Back00" HorizontalAlignment="Center" Margin="0" Source="ms-appx:///Assets/BackCard/back.png"/>
</Border>
<Image x:Name="Front00" HorizontalAlignment="Center" Margin="10,10,10,5" VerticalAlignment="Center" Height="{Binding ActualHeight, ElementName=Back00}" Width="{Binding ActualWidth, ElementName=Back00}"/>

我试图将Front00图片大小设置为等于Back00图片大小,但其高度和宽度始终为零,但Back00具有此height }:自动(239),此width自动(239)

我正在使用此绑定:

Height="{Binding ActualHeight, ElementName=Back00}" Width="{Binding ActualWidth, ElementName=Back00}"

但它没有用。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

MSDN上,我读过这个:

出于ElementName绑定的目的,ActualHeight在更改时不会发布更新(由于其异步和运行时计算的性质)。不要尝试使用ActualHeight作为ElementName绑定的绑定源。如果您的场景需要基于ActualHeight的更新,请使用SizeChanged处理程序。

所以,我在XAML上添加了这个:

<Image x:Name="Back00" HorizontalAlignment="Center" Margin="0" Source="ms-appx:///Assets/BackCard/back.png" SizeChanged="Back00_SizeChanged"/>

关于Code Behind:

private void Back00_SizeChanged(object sender, Windows.UI.Xaml.SizeChangedEventArgs e)
{
    Front00.Height = Back00.ActualHeight;
    Front00.Width = Back00.ActualWidth;
}

现在它完美无缺。