【问题标题】:In WPF/XAML, should every container control contain a layout control?在 WPF/XAML 中,每个容器控件都应该包含一个布局控件吗?
【发布时间】:2009-03-17 15:49:23
【问题描述】:

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

以组框为例。我可以直接将控件放到组框上,也可以使用布局控件并将布局控件放在组框内,然后将控件放入其中。

我可以看到后者的好处,因为布局控件代表了一组明确定义的规则,用于孩子的行为方式。然而,在这样做的过程中,我的 XAML 树开始变得嵌套很深,并且有点难以导航。

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

【问题讨论】:

    标签: c# .net wpf xaml


    【解决方案1】:

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

    大多数 ItemsControls 都有一个 StackPanel 作为默认布局。所以这基本上是一个问题,您是否想要 StackPanel 行为来安排您的子项?

    【讨论】:

      【解决方案2】:

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

      我最终得到了很多嵌套的 Grids、StackPanels 等。是的,树可以变得很深,但我几乎只使用 Blend 进行布局和设计,所以导航树并不是那么糟糕,尤其是如果你记得给所有的东西起描述性的好名字。

      我不知道这是否是“最佳实践”,但它确实对我最有效。

      【讨论】:

        猜你喜欢
        • 2019-03-21
        • 1970-01-01
        • 2021-07-04
        • 2017-08-16
        • 1970-01-01
        • 2016-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多