如何使用网格或其他控件在 WPF 中布局表单以实现可维护性[关闭]

2024-03-17

我有一个 WPF 表单,我想在其上放置一个标准表单。每个表单元素都有一个标签,然后是一个控件。相当标准的东西。

如果我使用包裹面板,它可能会导致标签和控件分离,但我希望它们保持在一起。是否有一些 WPF 相当于<nobr/>?

网格可以工作,并允许跨列等,但是我真的很讨厌您在每个控件上指定列和行。这使得重新排序或将内容插入列表变得非常不方便。

有没有办法让网格使用更多 HTML 样式的列/行,其中项目是它们所在行的子项,以便我可以轻松地重新排序?

是否有其他控件可以让我轻松布局表单?


是否有一些与 nobr 等效的 WPF?

请记住,您可以嵌套面板:

<WrapPanel Orientation="Horizontal">
   <StackPanel Orientation="Horizontal">
      <Label>Some field</Label>
      <TextBox>Some value</TextBox>
   </StackPanel>
   <StackPanel Orientation="Horizontal">
      <Label>Another field</Label>
      <TextBox>Another value</TextBox>
   </StackPanel>
   ...
</WrapPanel>

此外,对于柱状布局,网格的共享大小范围可以协调使用它的任意数量的网格:

<StackPanel Orientation="Vertical" Grid.IsSharedSizeScope="True">
   <Grid>
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="Auto" SharedSizeGroup="Label"/>
         <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <Label Grid.Column="0">Some field</Label>
      <TextBox Grid.Column="1">Some value</TextBox>
   </Grid>
   <Grid>
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="Auto" SharedSizeGroup="Label"/>
         <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <Label Grid.Column="0">Another field</Label>
      <TextBox Grid.Column="1">Another value</TextBox>
   </Grid>
</StackPanel>

我有点讨厌 XAML 的冗长,尤其是您必须重复列定义。不过,如果您正确地构建类并使用模板,那么事情并没有那么糟糕。请注意,您不会跟踪此方案中任何位置的行号,因此对字段重新排序很简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用网格或其他控件在 WPF 中布局表单以实现可维护性[关闭] 的相关文章

随机推荐