获取子节点最宽子节点的ActualWidth

本文关键字:子节点 ActualWidth 获取 | 更新日期: 2023-09-27 18:08:34

我使用画布来生成展开器在其下方元素上的悬停效果,并将其宽度绑定到展开器的宽度。然而,我刚刚注意到(当我改变语言时),其中一个元素是一个长字符串,当它可见时,它将其宽度提供给父元素(扩展器),而不是其他。

<Canvas Width="{Binding ActualWidth, ElementName=TheExpander}">
  <Expander Name="TheExpander" ...>
    <ListBox ... >
      <ListBox.ItemTemplate>
        <DataTemplate>
          <CheckBox ... />
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
  </Expander>
</Canvas>

是否有相对简单的方法来做到这一点?如果正确的解决方案需要我重新构建标记,我相信我会更喜欢简单地设置画布的宽度,即硬编码。

你应该几乎不硬编码宽度和高度。让WPF布局引擎来解决这个问题。这就是它存在的意义。像StackPanel之类的东西会根据需要增长。

获取子节点最宽子节点的ActualWidth