我有三个不同的列表集合。
如何在三组中的一个 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>
然后为您的代码创建并绑定列表。这是一个测试示例:
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; }
}
}
这将为您提供的每个队列(或列表)创建一个列表框,并按列表的名称对其进行分组。
输出:
SOURCE: Modified the example from the link below into this format. LISTBOX grouping using collectionView Source
您可以使用 ListView 轻松地将它们分组。
您可以单独添加它们,当您完成第一组时,添加一个具有 null 或空字符串值和“------”作为显示值的项目,这将向用户指示分离。