You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ListBox配置两列布局并向各列填充对应数据

WPF ListBox 实现两列表格布局方法

要实现书籍标题、作者双列的表格类展示效果,通过自定义列表项模板、用Grid做两列布局即可完成,不需要引入额外组件,具体实现如下:

  • 若要使用数据绑定规范实现,首先在后端定义书籍数据实体:
public class Book
{
    public string BookTitle { get; set; }
    public string BookAuthor { get; set; }
}
  • 改写XAML代码,新增列表项模板划分两列,如需表头可在ListBox上方增加同列宽的Grid做标题栏,保证列对齐:
<!-- 表头区域,列宽比例和下方列表项完全一致 -->
<Grid DockPanel.Dock="Top" Grid.Column="1" Grid.Row="1" Width="325" Margin="4,2">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="书籍标题" FontWeight="SemiBold" Grid.Column="0"/>
    <TextBlock Text="作者" FontWeight="SemiBold" Grid.Column="1"/>
</Grid>

<ListBox 
    DockPanel.Dock="Top" 
    Grid.Column="1" 
    Grid.Row="1" 
    Height="200" 
    Width="325"
    ScrollViewer.VerticalScrollBarVisibility="Visible">
    <!-- 定义每个列表项的双列布局模板 -->
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="2*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding BookTitle}" Grid.Column="0"/>
                <TextBlock Text="{Binding BookAuthor}" Grid.Column="1"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>

    <!-- 填充书籍数据 -->
    <local:Book BookTitle="Visual Basic" BookAuthor="Evangelos Petroutsos"/>
    <local:Book BookTitle="Silverlight" BookAuthor="Matthew MacDonald"/>
    <local:Book BookTitle="ASP.NET" BookAuthor="Adam Freeman"/>
    <local:Book BookTitle="WCF" BookAuthor="Juval Lowy"/>
    <local:Book BookTitle="Web Services" BookAuthor="Gustavo Alonso"/>
    <local:Book BookTitle="Windows Service" BookAuthor="Michael Gendler"/>
</ListBox>

注意:XAML中的local是当前项目命名空间的映射声明,需要在窗口/用户控件的根节点添加配置,格式为xmlns:local="clr-namespace:你的项目实际命名空间"。

  • 如果不需要做动态数据绑定,也可以直接在每个ListBoxItem内嵌套Grid实现双列,无需自定义模板:
<ListBox DockPanel.Dock="Top" Grid.Column="1" Grid.Row="1" Height="200" ScrollViewer.VerticalScrollBarVisibility="Visible">
    <ListBoxItem>
        <Grid Width="325">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="Visual Basic" Grid.Column="0"/>
            <TextBlock Text="Evangelos Petroutsos" Grid.Column="1"/>
        </Grid>
    </ListBoxItem>
    <!-- 其余列表项按照相同结构依次添加即可 -->
</ListBox>

如果需要更标准的表格交互(比如列宽拖拽、列头排序、网格线),直接使用ListView搭配GridView会比自定义ListBox模板更简便。


内容的提问来源于stack exchange,提问作者HereToLearn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:54:20