ListView DataTemplate Grid将图像高度绑定到其他View的高度

时间:2017-03-29 06:37:54

标签: c# xaml uwp

我有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>

我希望ImageTextBlock's高度,但我的Binding不起作用(据我所知 - 因为当绑定得到解决时,View的ActualHeight仍为0)

问题是如何将Image身高绑定到TextBlock身高?

1 个答案:

答案 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>