如何让一个元素在水平的StackPanel中决定另一个元素在StackPanel中的高度



在StackPanel中,我希望TextBlock的高度决定图像的高度,但试图将图像高度绑定到TextBlock ActualHeight会导致图像消失。TextBlock的高度将根据所使用字体的大小而变化。

StackPanel的定义如下:

<StackPanel Orientation="Horizontal">
<Image Source="{Binding HyperlinkIconImagePath}" 
Height="{Binding ElementName=hyperlinkTextBlock, Path=ActualHeight}" 
Margin="{StaticResource IconLeftMargin}" 
VerticalAlignment="Center"/>
<TextBlock>
<Hyperlink 
NavigateUri="{Binding HyperlinkUri}">
<TextBlock 
Name="hyperlinkTextBlock" 
Text="{Binding HyperlinkDisplayedText}"/>
</Hyperlink>
</TextBlock>
</StackPanel>

我已经尝试了很多不同的方法,但没有一个是有效的。非常感谢任何帮助。注意,这个StackPanel包含在一个ControlTemplate中。

这个问题的解决方案来自一个相当微妙的方向。我最初试图绑定到TextBlock的ActualHeight值。在布局过程中,ActualHeight值在被Image Height属性引用时显然还没有确定。然后我考虑使用在TextBlock中显示的字体的大小,并且这个FontSize值显然已经建立并且可用。

<Image Source="{Binding HyperlinkIconImagePath}" 
Height="{Binding ElementName=HyperlinkTextBlock, Path=FontSize}" 
Margin="{StaticResource IconLeftMargin}" 
VerticalAlignment="Center"/>
因此,我更改了Image Height绑定以引用TextBlock字体大小,这导致了成功的呈现。

tryVerticalAlignment="Center":

& lt; TextBloc VerticalAlignment ="Center"…/祝辞

最新更新