導入
ComboBoxは、クリックすると選択肢が開くドロップダウンです。RadioButtonと同じ「択一」ですが、選択肢が多いときも省スペースで済みます。
XAMLサンプル(読み物)
<!-- SelectedIndex="0" で最初の項目を初期選択 -->
<ComboBox x:Name="prefBox" Width="150" SelectedIndex="0">
<ComboBoxItem Content="東京" />
<ComboBoxItem Content="大阪" />
<ComboBoxItem Content="福岡" />
</ComboBox>
// 選択中の項目を取得
var item = prefBox.SelectedItem as ComboBoxItem;
string? selected = item?.Content?.ToString(); // 例: "大阪"
主なプロパティ
SelectedItem… 選択中の項目(オブジェクト)SelectedIndex… 選択中の位置(0始まり、未選択は-1)IsEditable…trueで自由入力も許可ItemsSource… データ(Listなど)から項目を自動生成する入口
主なイベント
SelectionChanged… 選択が変わったとき
補足: 項目をXAMLに直書きするのは学習用です。実務では次のMVVM版が基本です。
MVVM(実務ではこう書く)
項目をXAMLに直書きせず、ViewModelのコレクションをItemsSourceにバインドし、選択値もSelectedItemでバインドします。
<ComboBox ItemsSource="{Binding Prefectures}"
SelectedItem="{Binding SelectedPrefecture, Mode=TwoWay}" />
public List<string> Prefectures { get; } = new() { "東京", "大阪", "福岡" };
public string? SelectedPrefecture
{
get => _selected;
set { _selected = value; OnPropertyChanged(); }
}
選択が変わるとSelectedPrefectureが自動更新され、コードビハインドのSelectionChangedが不要になります。
試す(ローカル)
- 項目直書きから
ItemsSourceバインドに変え、選択がViewModelのSelectedPrefectureに反映されることを確認。
まとめ
- ComboBoxは省スペースの択一(ドロップダウン)
- 選択は
SelectedItem/SelectedIndex - 実務では項目を
ItemsSource、選択をSelectedItemでViewModelにバインド
次回: 一覧を表示して選ぶListBoxです。