如何将控件扩展到父级边界之外?

How to expand a control beyond the parent's bounds?

我试图在单击切换按钮时弹出一个列表框。在后面的代码中,我使用 Visibility 属性并将其设置为 Visibility.Visible。然而,虽然列表框出现在屏幕上,但它被裁剪为切换框的大小 (30x30),而不是像我希望的那样裁剪为它自己的大小 (99x99)。

<ToggleButton HorizontalAlignment="Left" Margin="0,0,0,0"
              VerticalAlignment="Top" Width="30" Height="30"
              Click="ButtonBase_OnClick">
  <ListBox x:Name="listBox1"
           ClipToBounds="False" 
           Visibility="Collapsed"
           HorizontalAlignment="Left"
           Height="99" 
           VerticalAlignment="Top" 
           Width="99">
    <CheckBox x:Name="checkBox3" Content="CheckBox"/>
    <CheckBox x:Name="checkBox4" Content="CheckBox"/>
  </ListBox>
</ToggleButton>

我已经尝试将属性 ClipToBounds 设置为 false 但它并没有带来太大变化。我还尝试将组合框的高度设置为 Auto。这使滚动条出现(虽然是水平滚动条,这本身有点出乎意料)但所有内容仍然被裁剪到切换框的边界。

我还需要设置什么?或者我是否以错误的方式处理它(如:我应该在切换按钮的子标签内为模板、触发器等定义组合框)吗?

如果您不希望列表框位于 切换按钮内,则不应将其放置在切换按钮内。将它放在切换按钮之外,它应该可以工作。也许您应该看看 Expander 控件,它似乎可以满足您的需要。它仍然不会使扩展器主体大于扩展器。

还有一点要注意:设置固定大小是不好的风格。尝试使用 Grid 和各种面板等容器对 window 进行分区,您将不需要固定大小。如果您的切换按钮没有固定大小,它可以在内容需要扩展时扩展。