在ListViewItem中对齐TextBlocks

时间:2018-02-18 18:51:59

标签: wpf uwp

我有一个包含少量TextBlocks的ListView。我想将这些文本块对齐以获取列,但问题是内容可能具有不同的长度。 有没有办法设置每个文本块的长度,如果值更短,添加空格?

<ListView x:Name="InfoBird_ListView" IsItemClickEnabled="False" IsHitTestVisible="False">
<ListView.ItemTemplate>
    <DataTemplate  x:DataType="local:SelectedBirdData">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding dataId}"    Margin = "0,0,0,0" FontSize="16" />
            <TextBlock Text=":"                   Margin = "0" FontSize="16" />
            <TextBlock Text="{Binding latitude}"  Margin = "10,0,0,0" FontSize="16" />
            <TextBlock Text="{Binding longitude}" Margin = "10,0,0,0" FontSize="16" />
            <TextBlock Text="{Binding altitude}"  Margin = "10,0,0,0" FontSize="16" />
            <TextBlock Text="{Binding timeStamp}" Margin = "10,0,0,0" FontSize="16" />
        </StackPanel>
    </DataTemplate>
</ListView.ItemTemplate>
</ListView>

My ListView

1 个答案:

答案 0 :(得分:2)

有两种方法可以解决这个问题,

  1. 为所有Width设置一个常量Textbox's,使它们都适合数据。

  2. 使用GridGrid.ColumnDefinitions创建表格式结构,以便您可以将数据放入列中。下面是更新的`DataTemplate:

    <Grid Margin="5,40">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="21*"/>
            <ColumnDefinition Width="7*"/>
            <ColumnDefinition Width="76*"/>
            <ColumnDefinition Width="87*"/>
            <ColumnDefinition Width="75*"/>
            <ColumnDefinition Width="1224*"/>
        </Grid.ColumnDefinitions>
        <TextBlock Text="{Binding dataId}" Margin = "0,0,0,0" FontSize="16" Grid.Column="0"/>
        <TextBlock Text=":" Margin = "0" FontSize="16" Grid.Column="1"/>
        <TextBlock Text="{Binding latitude}" Margin = "10,0,0,0" FontSize="16" Grid.Column="2"/>
        <TextBlock Text="{Binding longitude}" Margin = "10,0,0,0" FontSize="16" Grid.Column="3"/>
        <TextBlock Text="{Binding altitude}" Margin="10,0,0,0" FontSize="16" Grid.Column="4"/>
        <TextBlock Text="{Binding timeStamp}" Margin = "10,0,0,0" FontSize="16" Grid.Column="5"/>
    </Grid>
    
  3. 第二种方法更适合动态窗口大小