我有ListView
这样的Grid
DataTemplate
definiotion:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock x:Name="Tb" Text="{x:Bind Address}" TextWrapping="Wrap"/>
<Image Source="{x:Bind SignalResource}" Height="{Binding ElementName=Tb, Path=ActualHeight}"/>
</Grid>
我希望Image
取TextBlock's
高度,但我的Binding不起作用(据我所知 - 因为当绑定得到解决时,View的ActualHeight
仍为0)
问题是如何将Image
身高绑定到TextBlock
身高?
答案 0 :(得分:1)
ActualHeight (宽度)不能作为常规属性使用 - MSDN information:
注意虽然它有一个ActualHeightProperty支持字段,但ActualHeight不会引发属性更改通知,应该将其视为常规CLR属性而不是依赖项属性。
在您的情况下,您可以在 TextBlock 上使用 SizeChanged 事件,然后调整图像的高度。我不确定,但也许可以通过 RelativePanel 进行适当的对齐。这是一个尝试与 RelativePanel (因为我已经尝试过有可能它会工作):
<RelativePanel>
<TextBlock Name="MyTB" Text="Something" FontSize="24"/>
<Rectangle Fill="Green" Width="40" RelativePanel.RightOf="MyTB" RelativePanel.AlignTopWith="MyTB" RelativePanel.AlignBottomWith="MyTB"/>
</RelativePanel>