如何将 wpf 画布中的元素居中
如何使用附加属性使 wpf 画布中的元素居中?
How can I center an element in wpf canvas using attached properties?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何使用附加属性使 wpf 画布中的元素居中?
How can I center an element in wpf canvas using attached properties?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
我看到这篇文章是因为我正在寻找一种仅在 XAML 中将 Canvas 中的元素居中的方法,而不是使用附加属性。
以防万一,您出于同样的原因而来:
还有一件事,但
请注意,这里的每个解决方案都是陷阱,具体取决于您试图实现的目标。仅仅因为您的元素按层次顺序位于
Canvas
中,它就不会成为Canvas
本身的一部分。Canvas
是用来绘制的,而不是放置控件的。因此您不能对这些控件使用Canvas
API,因为Grid
显然,就像一个孤立的覆盖层。如果您想要一个单独的叠加层,而
Canvas
是您的背景,那么您可以使用此解决方案。I came across this post, because I was searching for a way to center an element within a Canvas in XAML only, instead of using Attached Properties.
Just in case, you came for the same reason:
One more thing, though
Beware that every solution here is a trap, depending on what you try to achieve. Just because your element is within the
Canvas
on a hierarchical order, it will not be part of theCanvas
itself. ACanvas
is something to draw on and not to place controls in. So you cannot use theCanvas
API for those controls, because theGrid
is like an isolated overlay, obviously.If you want a separated overlay, whilst the
Canvas
is your background, you are good to go with this solution.像这样的东西。
Something like this.
我知道执行此操作的唯一方法是计算画布的大小,然后根据该大小设置属性。这可以使用画布上
SizeChanged
的事件处理程序来完成:The only way I know to do this is to figure out the size of the canvas, and then set the properties based off that. This can be done using an event handler for
SizeChanged
on the canvas:您可以将 Canvas 和想要居中的元素放在 Grid 中:
You can put the Canvas and the element you want to be centered inside a Grid :