wpf - 如果相邻元素填充容器内的空间(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>
为什么它在按钮内表现得像这样?如何将其固定为显示画布的所需行为?
解决方案
推荐阅读
- javascript - 我无法访问我的 jQuery 对象数组中的任何属性
- kubernetes - 如何使用fluentd解析kubernetes pod输出的多个日志
- next.js - 我可以在自托管环境中运行新的 Next.js 中间件吗?
- read-the-docs - ReadTheDocs:文档不是根据拉取请求构建的
- python - 尝试运行 plt.show() 会创建错误消息
- go - 如何在 macOS 上的 logrus/lumberjack 中自动重新创建日志文件
- python - 无法在等值线图上绘制值
- javascript - 你如何轻松地转到数组中的下一个项目?
- r - 如何在不知道绘图的确切坐标的情况下将文本放在绘图 (ggplot2) 上?
- java - 有没有办法用 JOOQ 生成 DAO,findById 返回 Optional