在WPF中将父元素的高度与子元素的高度同步

9

我正在使用VS 2015和WPF开发一个掩码设计器,其中我可以拖动、移动和调整控件大小。其中之一的控件是标签(Label),它具有TextBlock作为内容。

这在我的XAML中看起来像这样:

<Label Background="AliceBlue" HorizontalAlignment="Left" Margin="10,5,0,0" VerticalAlignment="Top">
    <TextBlock TextWrapping="Wrap" Height="Auto">Label</TextBlock>
</Label>

对于 TextBlock,我将 TextWrapping 设置为“Wrap”,将 Height 设置为“Auto”。 当我尝试调整 Label 的高度时,即使它的高度已经被调整到最小,TextBlock 的内容仍然应该完全可见。 我用 TextBlock 尝试了一下,效果很好。 但是,当我尝试使用实现 TextBlock 的 Label 时,它不起作用了,TextBlock 的内容不再完全可见。
如何将父级的高度与子级的高度同步?
谢谢! Patrick
2个回答

8
您可以使用父元素的名称并绑定其ActualHeight属性。
<Label x:Name="parentElementName" Background="AliceBlue" HorizontalAlignment="Left" Margin="10,5,0,0" VerticalAlignment="Top">
        <TextBlock TextWrapping="Wrap"  Height="{Binding ActualHeight, ElementName=parentElementName}">Label</TextBlock>
</Label>

编辑

   <Label x:Name="parentElementName" Background="AliceBlue" Height="{Binding ActualHeight, ElementName=Child}"HorizontalAlignment="Left" Margin="10,5,0,0" VerticalAlignment="Top">
            <TextBlock  x:Name="Child" TextWrapping="Wrap"  Height="Auto">Label</TextBlock>
    </Label>

1
谢谢你的回答,但那不是我要找的。我需要将父元素的高度与其子元素同步,而不是将子元素与其父元素同步。在XAML中有没有一种方法可以实现这个? - Patrick Pirzer

7

@Ghassen的答案基本正确。如果你想将父对象绑定到子对象,则需要反转上面的答案。下面是反转后的代码。

<Label x:Name="ParentLabel" Height="{Binding ElementName=ChildBlock, Path=ActualHeight}" Width="{Binding ElementName=ChildBlock, Path=ActualWidth}"  Background="Blue">
      <TextBlock x:Name="ChildBlock" Height="100" Width="100" Background="Green"></TextBlock>
</Label>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接