0

我有一个 ListView,它的 ItemsSource 是字符串的集合。正如您所料,字符串的集合具有不同的长度。我的目标是在 listView 中水平显示这些字符串。

有很多水平使用 ListView 的例子,所以这部分很简单。我通过将 Horizo​​ntal StackPanel 指定为 ItemsPanelTemplate 来实现...

我的 ListView xaml:

 <ListView x:Name="myListView">
  <ListView.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal"/>
    </ItemsPanelTemplate>
  </ListView.ItemsPanel>
  <ListView.View>
    <GridView>
      <GridViewColumn>
        <GridViewColumn.CellTemplate>
          <DataTemplate>
            <StackPanel Orientation="Horizontal">
              <Button Click="Button_Click" FontSize="10" Foreground="Salmon"  BorderThickness="0" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Content="x" Background="Transparent" />
              <Label FontSize="10" Foreground="SteelBlue" Content="{Binding}"/>
            </StackPanel>
          </DataTemplate>
        </GridViewColumn.CellTemplate>
      </GridViewColumn>
    </GridView>
  </ListView.View>
</ListView>

我要显示的内容:

[This is a string] [This is also a string] [abc] [Look at me]

我的 xaml 显示的内容:

[This i] [This i] [abc   ] [Look a]

我可以给我的 GridviewColumn 一个设定的宽度,并得到这样的东西:

[This is a string  ][This is also a string] [abc           ][Look at me        ]

我还可以将列宽设置为自动,这将使其与最宽的项目一样大......但我真的很希望它能够节省空间并将它们并排放置在它们的真实宽度上。

我做了很多研究但没有成功,有什么想法吗?

4

1 回答 1

2

我不确定如何在 ListView 中实现这一点。但我尝试使用 ListBox 效果很好。参考下面的代码。

<ListBox x:Name="myListView">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Button Click="Button_Click" FontSize="10" Foreground="Salmon"
                            BorderThickness="0" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Content="x" Background="Transparent" />
                    <Label FontSize="10" Foreground="SteelBlue" Width="Auto" Content="{Binding}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
于 2015-01-28T16:34:12.833 回答