【发布时间】:2017-11-08 21:07:27
【问题描述】:
使用 UWP 意味着我不能总是使用 DIP 值。我依靠“自动”尺寸、“拉伸”对齐等。 我把我的问题缩小到这个:
如何将元素的高度和宽度绑定到另一个高度和宽度为“自动”的元素?
示例:
<Grid.RowDefinitions>
<RowDefinition x:Name="CardGriddRow1" Height="2*" />
<RowDefinition x:Name="CardGrdidRow2" Height="1*" />
</Grid.RowDefinitions>
<Rectangle Name="Rec1" Fill="Blue" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="auto" Height="auto" Grid.Row="1" Margin="20" />
<Rectangle Name="Rec2" Fill="Yellow" Grid.Row="0" Height="{x:Bind Rec1.ActualHeight, Mode=OneWay }" Width="{x:Bind Rec1.ActualWidth, Mode=OneWay }" HorizontalAlignment="Left" VerticalAlignment="Top" />
使用 ActualHeight 时,我只能使用 OneWay 模式。高度值为 NaN。 Rec2 的值为 0,但 Rec1 的 ActualHeight 大于 0。
有没有办法强制 Binding 采用 ActualHeight?
【问题讨论】:
-
您能否提供更多信息,说明您为什么需要这样做,因为显示的代码和给出的描述并不能真正解释您为什么需要这样做? (您可能有一种方法可以设置您的 xaml,而无需将高度和宽度设置为另一个元素的高度和宽度)
-
@jsmyth886 我正在制作一个简单的纸牌游戏。示例图片(实际上是一个简单的占位符):link 在最下面一行的网格中有 8 张卡片,它们始终占据了整个屏幕的宽度。当屏幕窄时,这些卡片可以排成两排,一排在另一排之上。这由 VisualStateManager 处理。上中部有两包牌,与底牌大小相同。我只想在 XAML 中执行此操作,但绑定无法正常工作。我希望,我错过了一些东西。
标签: xaml uwp windows-10