我有一个包含少量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>
答案 0 :(得分:2)
有两种方法可以解决这个问题,
为所有Width
设置一个常量Textbox's
,使它们都适合数据。
使用Grid
和Grid.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>
第二种方法更适合动态窗口大小