1

我有三个不同的列表集合。

如何在三组中的一个 ListBox 中显示它们?

List<string> pending;
List<string> busy;
List<string> completed;

最终结果应该是这样的:vbcity.com/cfs-file.ashx/__key/...。但我发现的唯一例子是使用一个列表。

4

3 回答 3

3

为您的 xaml 代码中的数据模板创建一个带有 Listview 的列表框:

<Grid>
    <ListBox Height="100" HorizontalAlignment="Left" Margin="10,10,0,0" Name="lbxTasks"    VerticalAlignment="Top" Width="120">
        <ListBox.GroupStyle>
            <GroupStyle />
        </ListBox.GroupStyle>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <ListView ItemsSource="{Binding Queue}" BorderThickness="0"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

然后为您的代码创建并绑定列表。这是一个测试示例:

namespace WpfApplication3
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        List<string> pending = new List<string> {"1","2"};
        List<string> busy = new List<string> { "4", "5" };
        List<string> completed = new List<string> { "7", "8" };

        private List<Tasks> MyTasks()
        {
            List<Tasks> tasks = new List<Tasks>();
            tasks.Add(new Tasks {Status = "Pending", Queue = pending});
            tasks.Add(new Tasks {Status = "Busy",Queue = busy});
            tasks.Add(new Tasks {Status = "Completed", Queue = completed});
            return tasks;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ICollectionView _tasksView = CollectionViewSource.GetDefaultView(MyTasks());
            _tasksView.GroupDescriptions.Add(new PropertyGroupDescription("Status"));
            lbxTasks.ItemsSource = _tasksView;
        }
    }

    public class Tasks
    {
        public List<string> Queue { get; set; }
        public string Status { get; set; }
    }
}

这将为您提供的每个队列(或列表)创建一个列表框,并按列表的名称对其进行分组。

输出:

Output of the application

SOURCE: Modified the example from the link below into this format. LISTBOX grouping using collectionView Source

于 2012-06-26T19:56:35.350 回答
2

您可以使用 ListView 轻松地将它们分组。

如何:对 Windows 窗体 ListView 控件中的项目进行分组

于 2012-06-26T19:23:46.697 回答
0

您可以单独添加它们,当您完成第一组时,添加一个具有 null 或空字符串值和“------”作为显示值的项目,这将向用户指示分离。

于 2012-06-26T19:24:00.900 回答