我有三个不同的列表集合。
如何将它们分三组显示在一个 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; }
}
}
这会为您提供的每个队列(或列表)创建一个列表框,并按列表的名称对其进行分组。
输出:
来源:将下面链接中的示例修改为这种格式。 LISTBOX grouping using collectionView Source
关于c# WPF 列表框 : n Lists, n 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11214511/