【发布时间】:2018-07-27 11:43:01
【问题描述】:
这是 XAML:
<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="Black">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Source="Image/L.png" Name="L"></Image>
<Image Source="Image/BG.png" Grid.Column="1" Name="BG" SizeChanged="BG_SizeChanged"></Image>
<Image Source="Image/R.png" Grid.Column="2" Name="R"></Image>
</Grid>
</Page>
我希望 L 和 R 的高度与 BG 相同。在 WPF 中我可以绑定 ActualHeight 轻松完成,但在 UWP 中失败了。我在 stackoverflow 中阅读了一些主题,知道我不能那样做没有了。
所以我用SizeChanged来做,代码如下:
private void BG_SizeChanged(object sender, SizeChangedEventArgs e)
{
L.Height = e.NewSize.Height;
R.Height = e.NewSize.Height;
}
好吧,当我运行APP,随意调整窗口大小时,APP崩溃了。奇怪的是visual studio没有报错,只是突出显示了这些代码:
这些代码默认不是我写的App.g.i.cs
这是怎么回事?我该如何解决这个问题?谢谢。
【问题讨论】:
-
@kennyzx 对不起,我不知道你的实际意思,你的意思是我应该在 Loaded 事件处理程序中绑定 acutalheight 而不是在 XAML 中?
-
我删除了我的评论,因为我意识到我没有仔细阅读。异常可能是由于调整 L 和 R 的大小,BG 的大小也会受到影响,这会触发更多的 BG_SizeChanged 事件。
-
最简单的解决方案是使用 Image 的 Stretch 属性。有四种可能的值,如果它们能发挥作用,请尝试它们。
-
@kennyzx 但是我的代码有什么问题?代码看起来并不复杂,但我不知道问题。
-
@kennyzx 或者有什么方法可以在不绑定或 SizeChanged 的情况下使图像高度相同?
标签: uwp