Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF/XAML中,每个容器控件是否都应该包含布局控件?_C#_.net_Wpf_Xaml - Fatal编程技术网

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

C# 在WPF/XAML中,每个容器控件是否都应该包含布局控件?,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,在XAML中设计WPF应用程序UI时,每个容器类型控件是否都应该包含一个布局控件来容纳所有子控件 以分组框为例。我可以直接将控件扔到组框上,也可以使用布局控件将布局控件放在组框内,然后再将控件放在组框内 我可以从后者中看到好处,因为布局控件代表了一组定义良好的规则,用于描述子对象的行为。然而,在这样做的过程中,我的XAML树开始变得嵌套得很深,而且导航起来有点困难 有鉴于此,始终使用布局控件是最佳做法,还是在某些情况下,完全可以在没有布局控件的组框和选项卡项中抛出控件?如果有,会有什么负面影响?

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

以分组框为例。我可以直接将控件扔到组框上,也可以使用布局控件将布局控件放在组框内,然后再将控件放在组框内

我可以从后者中看到好处,因为布局控件代表了一组定义良好的规则,用于描述子对象的行为。然而,在这样做的过程中,我的XAML树开始变得嵌套得很深,而且导航起来有点困难


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

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


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

Jobi是正确的,这两种方式都没有任何影响,但我的直觉一直是使用一个容器来容纳多个控件。这在很大程度上是因为我需要高度结构化的组织,但大多数情况下,这对我来说是有意义的

我最终得到了很多嵌套网格、StackPanel等。是的,树可以变得很深,但我使用Blend几乎完全用于布局和设计,因此导航树并不是那么糟糕,特别是如果你记得给所有东西都起一个好的描述性名称的话

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