導入
ListBoxは、項目を一覧で常に表示し、その中から選ばせるコントロールです。ComboBox(開閉式・択一)と違い、選択肢が見えていて、複数選択もできます。
XAMLサンプル(読み物)
<!-- SelectionMode: Single(1つ) / Multiple / Extended(Shift・Ctrlで範囲/追加) -->
<ListBox x:Name="tasks" Height="100" SelectionMode="Single">
<ListBoxItem Content="買い物" />
<ListBoxItem Content="掃除" />
<ListBoxItem Content="洗濯" />
</ListBox>
var selected = tasks.SelectedItem as ListBoxItem;
Console.WriteLine(selected?.Content);
主なプロパティ
SelectedItem… 選択中の項目(単一選択時)SelectedItems… 選択中の項目群(複数選択時)SelectionMode…Single/Multiple/ExtendedItemsSource… データから項目を生成
主なイベント
SelectionChanged… 選択が変わったとき
ComboBox との違い
- ComboBox:省スペース・開閉式・択一
- ListBox:一覧が常時見える・複数選択できる
MVVM(実務ではこう書く)
一覧データは**ObservableCollectionをViewModelに持ち、ItemsSourceにバインド**します。ObservableCollectionなら項目の追加・削除が自動で画面に反映されます。
<ListBox ItemsSource="{Binding Tasks}"
SelectedItem="{Binding SelectedTask, Mode=TwoWay}" />
using System.Collections.ObjectModel;
public ObservableCollection<string> Tasks { get; } = new() { "買い物", "掃除", "洗濯" };
public string? SelectedTask
{
get => _sel;
set { _sel = value; OnPropertyChanged(); }
}
試す(ローカル)
ItemsSourceをViewModelのObservableCollectionにバインドし、ViewModelからTasks.Add(...)すると一覧が自動で増えることを確認。
まとめ
- ListBoxは一覧表示+選択(複数選択も可)
SelectionModeで単一/複数を切り替え- 実務では
ObservableCollectionをItemsSourceにバインド(追加・削除が自動反映)
次回: 表形式で扱うDataGridです。