1

我制作了一个可以包含多个孩子(UIElements)的控件(看起来像一个网格)。我用代码测量和安排整个布局。现在,其中一些元素在 xaml 中定义了宽度,而有些则没有。

如果元素具有固定宽度或应该使用整个可用宽度,我如何在 measureOverride/arrangeoverride 中知道?

示例 XAML:

<MyControl>
   <TextBox x:Name="TextA" Text="TextFixed" Width="10"/>
   <TextBox x:Name="TextB" Text="TextStretch"/>
</MyControl>

在 uielement.Measure() 之后的 MeasureOverride 方法中,大小是该元素所需的最小大小。我不知道如何查看何时应该计算“TextB”的可用宽度......

更新:

在 MeasureOverride() 中,两个元素都有 Horizo​​ntalAlignment 'Stretch',并且在 uiElement.Measure(availableSize) 之后都有 DesiredSize.Width。该宽度是它需要的最小宽度。有了这些信息,我无法知道这两个元素中的哪一个应该被拉伸。

4

2 回答 2

1

查看控件HorizontalVerticalAlignment属性。

如果不是Stretch控件,则应仅采用固定大小。

于 2012-12-07T07:39:11.767 回答
0

我的问题的解决方案是在ArrangeOverride()元素应该拉伸宽度为 double.NaN 时检查宽度

于 2012-12-10T13:14:45.477 回答