有没有一种方法可以使用WPF网格,而不需要为每个项目指定绝对单元格坐标?

wwwo4jvm  于 2023-08-07  发布在  其他
关注(0)|答案(3)|浏览(97)

我使用Grid的典型表单在XAML中看起来像这样:

  1. <Grid>
  2. <Grid.ColumnDefinitions>
  3. <ColumnDefinition Width="Auto"></ColumnDefinition>
  4. <ColumnDefinition></ColumnDefinition>
  5. </Grid.ColumnDefinitions>
  6. <Grid.RowDefinitions>
  7. <RowDefinition Height="Auto"></RowDefinition>
  8. <RowDefinition Height="Auto"></RowDefinition>
  9. <RowDefinition Height="Auto"></RowDefinition>
  10. <RowDefinition Height="Auto"></RowDefinition>
  11. <RowDefinition Height="Auto"></RowDefinition>
  12. <RowDefinition Height="Auto"></RowDefinition>
  13. </Grid.RowDefinitions>
  14. ....
  15. <TextBlock Grid.Row="6" Text="Component"/>
  16. <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Component.Name}"></TextBox>
  17. <TextBlock Grid.Row="7" Text="Bussiness Process"/>
  18. <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding BusinessProcess.Name}"></TextBox>
  19. </Grid>

字符串
有没有办法避免指定精确的行/列坐标?
基本上,我希望能够通过复制XAML来快速重新排序网格中的控件,现在我必须更改坐标,这很尴尬。我不想在设计器中对它们重新排序,因为这会给项添加一些不必要的属性。

jv4diomz

jv4diomz1#

不可以。不幸的是,Grid的工作方式是在子节点上定义Grid.RowGrid.Column附加属性-必须在每个子节点上指定它们。
顺便说一句,Blend在让你移动这些东西而不会出现“额外”属性方面做得更好。你可能想试着在这种情况下试试。

jslywgbw

jslywgbw2#

不,没有办法避免行/列编号。如果你不想安装MS Blend,你可以试试Karl Shifflett提供的精彩免费的Visual Studio插件:XAML Power Toys.在其他有用的东西,它允许你玩网格单元格...

axkjgtzd

axkjgtzd3#

我可能会迟到很久,但无论如何...;-)
托马斯Levesque的SimpleGrid可能是一个合适的解决方案:

  1. <my:SimpleGrid Rows="Auto,5,*" Columns="60,*">
  2. ...
  3. </my:SimpleGrid>

字符串
查看他的博客了解更多细节:https://thomaslevesque.com/2010/07/20/wpf-a-simpler-grid-using-xaml-attribute-syntax/

相关问题