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

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

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

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

        ....

        <TextBlock Grid.Row="6" Text="Component"/>
        <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Component.Name}"></TextBox>
        <TextBlock Grid.Row="7" Text="Bussiness Process"/>
        <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding BusinessProcess.Name}"></TextBox>

    </Grid>

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

jv4diomz

jv4diomz1#

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

jslywgbw

jslywgbw2#

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

axkjgtzd

axkjgtzd3#

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

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

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

相关问题