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

n9vozmp4  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(128)

在StackPanel中,我希望TextBlock的Height指定Image的高度,但试图将Image Height绑定到TextBlock ActualHeight会导致Image消失。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包含在一个控制模板中。

zfycwa2u

zfycwa2u1#

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

<Image Source="{Binding HyperlinkIconImagePath}" 
       Height="{Binding ElementName=HyperlinkTextBlock, Path=FontSize}" 
       Margin="{StaticResource IconLeftMargin}" 
       VerticalAlignment="Center"/>

因此,我更改了Image Height绑定以引用TextBlock字体大小,这导致了成功的呈现。

zyfwsgd6

zyfwsgd62#

请尝试VerticalAlignment="Center"
〈文本块垂直对齐方式=“居中...”/〉

相关问题