2011-03-02 56 views
0

我想制作一个自定义的面板(除其他外)插入所有孩子之间的间距。从面板继承似乎非常复杂,也许没有必要。我想要的是接近StackPanel,所以我想我可以从StackPanel继承并修改ArrangeOverride和MeasureOverride以获得我想要的。 我从Reflector中获得了这些实现,但立即注意到一个属性根本不能从继承类中访问,即IsScrolling(和_scrollData字段)。我的问题是,如果我可以跳过这一点,或者如果有其他方式来实现相同的行为?我不知道我需要滚动这个自定义面板,但我可能会做一些日子,我不想自己画一个角落...WPF:ArrangeOverride在自定义的StackPanel

回答

0

如果你想要的只是容器内的所有元素会自动包含保证金定义,你是很多只是创建一个实现该功能的自定义行为更好。

要创建自定义行为,只需执行Behavior<Panel>。这很明显,但如果你不知道如何问。

+0

我想在不使用保证金的情况下在孩子之间添加空间(他们也应该可以自己使用其他保证金),并且我希望能够根据某些规则指定填充资产以停靠/填充孩子我想添加一个分组属性来分隔具有更大空间的儿童组。我可以使用行为来完成所有这些吗?这似乎是一个自定义面板更合适? – 2011-03-02 10:36:28

+0

在这种情况下,是的,自定义面板是要走的路。至于你的问题,那么 - 我认为这是IScrollInfo基础结构的一部分,用于处理ScrollViewer集成。如果您在滚动时不需要自定义行为,我认为您可以忽略它。 – 2011-03-02 10:48:57

+0

我会第二次Elad,你真的需要一个字符串原因去定制面板路线。依靠现有的功能总是很好的。 对于初学者,我建议Dock面板作为主要UI元素更合适,因为使用了Fill。 如果您不想混淆元素边距,可以通过包含'spacer'元素来完成边距。 分组可以通过使用堆叠面板作为孩子来完成。 你可以给我们发一张它应该是什么样子的图像吗? – 2011-03-02 10:51:51

相关问题