我想从Grid控件派生,这样我就可以以一种特定的方式自动化它的子控件的布局,并且想知道什么是最好的方法。
我希望能够做的事情是:
<l:CustomGrid>
<Label Content="PropA" Grid.ColumnSpan="89"/>
<TextBox />
<Label Content="PropB"/>
<Slider />
<!-- this needs to span 2 columns -->
<Label Content="Span" l:CustomGrid.SpanRow="True"
HorizontalAlignment="Center" />
<Label Content="PropC"/>
<CheckBox />
</l:CustomGrid>其中,自定义网格将自动将其布局为2列网格,具有N行,方法是将每个偶数子对象作为第0列,每个奇数子对象作为第1列,然后在每个奇数子对象之后添加新行。通过覆盖OnVisualChildrenChanged来执行网格附加属性的逻辑/设置,这非常容易。
然而,在这一点上,附加的属性似乎还没有设置,所以自定义的SpanRow属性还没有被应用,这意味着我不能执行我需要的逻辑。
所以我想知道我如何才能用一种不同的方式来做这件事?
发布于 2013-12-03 22:35:50
不同的方式不是从Grid中破解或派生出来的。
在网格加载后,如果您在运行时更改子集合,则侦听已加载的事件和VisualChildrenChanged。在这两种情况下,您都必须执行相同的逻辑,如上所述,这些逻辑将通过子对象运行,并更改或应用新的值到附加的Grid.Column属性。
https://stackoverflow.com/questions/20352788
复制相似问题