在WPF / XAML中,每个容器控件是否应包含布局控件?

时间:2009-03-17 15:49:23

标签: c# .net wpf xaml

在XAML中设计WPF应用程序UI时,每个容器类型控件是否应包含一个布局控件来容纳所有子控件?

例如,拿一个组合框。我可以直接将控件放到组框上,或者我可以使用布局控件并将布局控件放在组框内,然后控制它。

我可以看到后者的好处,因为布局控件代表了一组明确定义的孩子将如何表现的规则。但是,在执行此操作时,我的XAML树开始深度嵌套并且难以导航。

鉴于此,最好始终使用布局控件,还是在没有这样的情况下将控件放在组框和选项卡项中是完全可以接受的?如果有的话会产生什么负面影响?

2 个答案:

答案 0 :(得分:2)

使用Layout面板没有任何负面影响,因为即使您没有指定一个面板,VisualTree中也有一个默认面板。如果您没有明确使用,您的XAML可能看起来更干净。

大多数ItemsControl都有一个StackPanel作为默认布局。因此,基本上是否需要 StackPanel 行为来安排您的子项?

答案 1 :(得分:1)

Jobi是正确的,无论哪种方式都没有任何影响,但我的直觉一直是使用Container来保存多个控件。其中很多是由于我对高度结构化组织的需求所驱动,但大多数情况下这对我来说都是有意义的。

我最终得到了很多嵌套的网格,StackPanel等。是的,树可以变得非常深,但我几乎只使用Blend进行布局和设计,所以导航树并不是那么糟糕,特别是如果你记得给所有好的描述性名字。

我不知道它是否是“最佳实践”,但它对我来说当然最有效。