c# WPF 列表框 : n Lists, n 组

标签 c# wpf list listbox grouping

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

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

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

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

最佳答案

在您的 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>

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

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

来源:将下面链接中的示例修改为这种格式。 LISTBOX grouping using collectionView Source

关于c# WPF 列表框 : n Lists, n 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11214511/

相关文章:

c# - 实现自定义流

WPF。以编程方式将图像移动到(X,Y)的最简单方法?

wpf - 为什么不调用 OnActivate?

Python:定义数字列表的方差

python - CPython 源代码中的列表推导式在哪里实现?

c# - 表达 C# 条件, "if a mouse/keyboard action has not occurred in the last ' n'秒”

c# - 如何使用 List 压缩一堆 IF 语句——这可能吗?

c# - 我应该从函数返回数组还是集合?

c# - 在运行时获取对象类型 PRISM MVVM

python - 如何在更正 if 语句之前打印 X 行