在XAML中,如何将项目彼此相邻放置在网格中

时间:2012-10-01 13:26:33

标签: c# visual-studio-2010 xaml

Ok Xaml是我的弱点之一,所以我真的很感激这方面的一些帮助...我想要实现的是在列表框中添加标题,名称,姓氏如下:

先生。约翰·多伊 约翰·多伊女士 Jane Doe夫人

这是我到目前为止的xaml,结果是名称标题和姓氏重叠在一起:

<DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding Title}"  Width="60" Height="25" Margin="4" HorizontalAlignment="Left" />
                    <TextBlock Text="{Binding FirstName}" Width="60" HorizontalAlignment="Center" />
                    <TextBlock Text="{Binding LastName}" Width="60" HorizontalAlignment="Right" />

                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="1*"/>
                        <ColumnDefinition Width="1*"/>
                        <ColumnDefinition Width="1*"/>
                    </Grid.ColumnDefinitions>
                </Grid>
            </DataTemplate>

3 个答案:

答案 0 :(得分:4)

在每个TextBlock中,您需要将Grid.Column="?"设置在哪里?是0,1或2。

如果未指定列(或行),则默认情况下元素将转到(0,0)。

答案 1 :(得分:3)

使用Grid.Column中的TextBlock属性。即:

<TextBlock Text="{Binding Title}"  Width="60" Height="25" Margin="4" HorizontalAlignment="Left" Grid.Column="0"/> 
<TextBlock Text="{Binding FirstName}" Width="60" HorizontalAlignment="Center" Grid.Column="1" /> 
<TextBlock Text="{Binding LastName}" Width="60" HorizontalAlignment="Right" Grid.Column="2" /> 

答案 2 :(得分:0)

对于网格中的每个元素,如果您希望它们显式为Row或Column,则必须指定它们。为此,您可以使用Grid.Row="X"Grid.Column="X"。如果将其保留为关闭状态,则默认值为0.

在您的情况下,您需要执行以下操作。

<DataTemplate>
    <Grid>
        <TextBlock Text="{Binding Title}"  Width="60" Height="25" Margin="4" HorizontalAlignment="Left" Grid.Column="0" />
        <TextBlock Text="{Binding FirstName}" Width="60" HorizontalAlignment="Center" Grid.Column="1" />
        <TextBlock Text="{Binding LastName}" Width="60" HorizontalAlignment="Right" Grid.Column="2" />

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
    </Grid>
</DataTemplate>