在 wpf 代码中将画布添加到堆栈面板时出现问题
我有与引用完全相同的问题(采用形式 这里,但没有回答):
我通过以下方式将控件添加到 StackPanel StackPanel.Childrens.Add()。
但我所看到的 - 所有控件均已添加 对我而言,处于相同的位置并且 相互重叠。 他们不是 StackPanel 内部的布局。
甚至 StackPanel.UpdateLayout( ) 也会带来 我什么都没有。
我正在尝试将 Canvas
es(是的,我确实需要它们)添加到 StackPanel
中。
有任何想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否在画布上设置了明确的尺寸? 画布的大小不会适应其内容,因此除非您明确指定画布的大小,否则当您将它们全部放入堆栈面板中时,它们的内容将显示在彼此的顶部,正如您所解释的。 这是因为画布子项相对于的 (0,0) 位置将是 stackpanel 的左上角(所有画布及其所有子项的同一点)。
在 Kaxaml 中尝试以下操作来突出显示这种情况:
您会看到两行文本叠加在一行文本之上其他。
现在,试试这个:
您将看到您想要的间距。
希望有帮助。
Have you set explicit sizes on your canvases? Canvases don't size to fit their content, so unless you specify the size of the canvas explicitly, when you put them all in a stack panel, their contents will appear on top of each other, as you explain. This is because the (0,0) position to which canvas children are positioned relative to will be the top-left of the stackpanel (the same point for all canvases and all their children).
Try the following in Kaxaml to highlight the situation:
You'll see the two lines of text are superimposed on top of one another.
Now, try this:
And you'll see the spacing you desire.
Hope that helps.