首页 > 解决方案 > 如果相邻元素填充容器内的空间(DockPanel,Grid),则 WPF 画布作为按钮内的内容不可见

问题描述

我有一个像这样的按钮:

  <StackPanel Orientation="Vertical" Width="200">
    <DockPanel LastChildFill="False">
      <Grid Width="81" Background="Blue" DockPanel.Dock="Right" />
      <Button  Width="120"  DockPanel.Dock="Left">
        <Grid>
          <TextBlock Text="Button" ></TextBlock>
          <Canvas Margin="120,0,0,0" >
            <TextBlock Text="I want to break free" />
          </Canvas>
        </Grid>
      </Button>
    </DockPanel>
  </StackPanel>

在这种情况下,画布内容将不会被渲染,并且其内容将不可见。但是,如果我将网格长度从 81 更改为 80,它就可以工作。

它也适用于这种情况:

    <Grid Width="200">
      <Grid Width="81" Background="Blue" DockPanel.Dock="Right" HorizontalAlignment="Right" Grid.Column="1" />
      <Button  Width="120"  HorizontalAlignment="Left">
        <Grid>
          <TextBlock Text="Button" ></TextBlock>
          <Canvas Margin="120,0,0,0" >
            <TextBlock Text="I want to break free" />
          </Canvas>
        </Grid>
      </Button>
    </Grid>

如果不在按钮内,画布也可以工作:

  <StackPanel Orientation="Vertical" Width="200">
    <DockPanel LastChildFill="False" Height="42">
      <Grid Width="81" Background="Blue" DockPanel.Dock="Right" />
      <Canvas Margin="120,0,0,0"  >
        <TextBlock  Text="I want to break free" />
      </Canvas>
    </DockPanel>
  </StackPanel>

为什么它在按钮内表现得像这样?如何将其固定为显示画布的所需行为?

标签: wpfbuttoncanvas

解决方案


推荐阅读