我正在使用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}"
但它没有用。
有什么想法吗?
答案 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;
}
现在它完美无缺。