我正在尝试在WPF中创建一个自定义面板。以下是我有的疑问:
- 当将项目放入面板中时,我应该如何考虑HorizontalAlignment和VerticalAlignment因素。我是否应该在我的ArrangeOverride方法中检查这些标志?
- 假设我想编写一个WrapPanel克隆版。如果将面板的宽度设置为"Auto",那么我该如何获取面板的实际宽度来安排子元素。我总是得到ActualWidth/ActualHeight为0。我是不是漏掉了什么?
请帮帮我。
是否采取水平和/或垂直对齐取决于您。如果一个垂直的StackPanel考虑了子元素的垂直对齐,那就很不好。
您应该在每个子控件上调用Measure()方法。这将给您所需的大小。
MeasureOverride
和ArrangeOverride
。在布局期间,正在计算事情,因此最终值尚不可用。要开始,请使用在MeasureOverride
中传递给您的Size
参数,这是可用大小。您可能会使用更多或更少的量。这取决于面板的布局行为。无论您做什么,都必须在所有子项上调用Measure
,当然您可以在计算中使用该信息。别忘了使用InternalChildren而不是Children。