3 つの異なる List コレクションがあります。
3 つのグループの 1 つの ListBox にそれらを表示するにはどうすればよいですか?
List<string> pending;
List<string> busy;
List<string> completed;
最終結果は次のようになります: vbcity.com/cfs-file.ashx/__key/…. しかし、私が見つけた唯一の例は、1 つのリストでの作業です。
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; }
}
}
これにより、指定したキュー (またはリスト) ごとにリストボックスが作成され、リストの名前でグループ化されます。
出力:
ソース: 以下のリンクの例をこの形式に変更しました。 collectionView Source を使用した LISTBOX グループ化
ListView を使用して簡単にグループ化できます。
それらを個別に追加し、最初のグループが完了したら、null または空の文字列値と「------」を表示値として追加して、ユーザーに分離を示します。