【问题标题】:Binding image size with another image size将图像尺寸与其他图像尺寸绑定
【发布时间】:2014-03-21 14:49:07
【问题描述】:

我正在使用 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 有这个heightAuto(239),还有这个widthAuto(239)

我正在使用这个绑定:

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

但它不起作用。

有什么想法吗?

【问题讨论】:

  • 输出窗口中是否有任何绑定错误?你怎么能说“它总是零”?
  • 不,没有错误。它的大小始终为零,但Back00 的高度为:Auto(239),宽度为:Auto(239)。
  • 试试 :Height="{Binding Height, ElementName=Back00}" Width="{Binding Width, ElementName=Back00}"
  • @VansFannel 你的 XAML 对我来说很好用。
  • 请看下面我的回答。谢谢。

标签: c# xaml windows-store-apps


【解决方案1】:

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"/>

关于背后的代码:

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

现在它可以完美运行了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多