有没有办法使用WPF网格而不为每个项目指定绝对单元格坐标?

时间:2009-09-25 16:05:38

标签: wpf xaml grid

我在XAML中使用Grid的典型表单如下所示:

    <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来快速重新排序网格中的控件,现在我必须更改尴尬的坐标。我不想在Designer中对它们重新排序,因为它为项目添加了一些不必要的属性。

2 个答案:

答案 0 :(得分:2)

没有。不幸的是,Grid通过在子节点上定义Grid.RowGrid.Column附加属性来工作 - 必须在每个子节点上指定它们。

BTW - Blend可以更好地让你移动这些东西而不会出现“额外”属性。您可能想尝试为这些类型的情况提供一个镜头。

答案 1 :(得分:1)

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