WPF/ComboBox
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(WPF,ComboBox);
*目次 [#l3c59fb0]
#contents
*参考情報 [#k208d87b]
-[[WPF]]
*プロパティ [#a24e9b88]
-同じような名前のプロパティがあって混乱するのでまとめ。
-ComboBoxのItemsSourceにカスタムオブジェクトのリストをバ...
**DisplayMemberPath [#eda0ad05]
-コンボボックスに表示するオブジェクトのプロパティ名。
-例)AnimalクラスのNameプロパティ。
DisplayMemberPath="Name"
**SelectedItem [#a2602574]
-コンボボックスで選択されたオブジェクトを設定するのに使う
-例)選択されたAnimalオブジェクトをViewModelにセット
SelectedItem="{Binding SelectedAnimal}"
**SelectedValuePath [#q4e767fb]
-コンボボックスで選択されたオブジェクトから値を取り出すの...
-例)選択されたAnimalオブジェクトのNameプロパティを取り出...
SelectedValuePath="Name"
**SelectedValue [#ne76324e]
-コンボボックスで選択されたオブジェクトの値の設定先を指定...
-例)選択されたAnimalオブジェクトのNameプロパティをViewMod...
SelectedValuePath="Name"
SelectedValue="{Binding AnimalName}"
*ComboBoxにカスタムオブジェクトのリストをバインディングす...
**概要 [#o1aedffd]
-ViewModelにAnimaのリストを持ち画面に表示。
-ComboBoxに表示するのはAnimalのNameプロパティ。
-ViewModelに設定するのは選択されたAnimalのIdプロパティ。
**XAML [#v0e3726c]
#pre{{
<ComboBox ItemsSource="{Binding Animals}" Selecte...
DisplayMemberPath="Name" ...
SelectedValuePath="Id"
SelectedValue="{Binding AnimalId}"
/>
<Button Click="Button_Click">検証</Button>
}}
**Animal.cs [#aadecb3f]
#pre{{
public class Animal
{
public int Id { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", Id, Name);
}
}
}}
**ViewModel.cs [#o1a4ed7a]
#pre{{
public class SimpleComboBox2WindowViewModel :INotifyP...
{
public SimpleComboBox2WindowViewModel()
{
this.Animals = new ObservableCollection<Anima...
new Animal() {Id = 1, Name="ゾウ"},
new Animal() {Id = 2, Name="ライオン"},
new Animal() {Id = 3, Name="トラ"},
};
this.animalId = 2;
}
public ObservableCollection<Animal> Animals { get...
private int animalId;
public int AnimalId
{
get
{
return animalId;
}
set
{
if (animalId != value)
{
animalId = value;
this.NotifyPropertyChanged("AnimalId");
}
}
}
public void NotifyPropertyChanged(string property...
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChanged...
}
}
public event PropertyChangedEventHandler Property...
}
}}
終了行:
&tag(WPF,ComboBox);
*目次 [#l3c59fb0]
#contents
*参考情報 [#k208d87b]
-[[WPF]]
*プロパティ [#a24e9b88]
-同じような名前のプロパティがあって混乱するのでまとめ。
-ComboBoxのItemsSourceにカスタムオブジェクトのリストをバ...
**DisplayMemberPath [#eda0ad05]
-コンボボックスに表示するオブジェクトのプロパティ名。
-例)AnimalクラスのNameプロパティ。
DisplayMemberPath="Name"
**SelectedItem [#a2602574]
-コンボボックスで選択されたオブジェクトを設定するのに使う
-例)選択されたAnimalオブジェクトをViewModelにセット
SelectedItem="{Binding SelectedAnimal}"
**SelectedValuePath [#q4e767fb]
-コンボボックスで選択されたオブジェクトから値を取り出すの...
-例)選択されたAnimalオブジェクトのNameプロパティを取り出...
SelectedValuePath="Name"
**SelectedValue [#ne76324e]
-コンボボックスで選択されたオブジェクトの値の設定先を指定...
-例)選択されたAnimalオブジェクトのNameプロパティをViewMod...
SelectedValuePath="Name"
SelectedValue="{Binding AnimalName}"
*ComboBoxにカスタムオブジェクトのリストをバインディングす...
**概要 [#o1aedffd]
-ViewModelにAnimaのリストを持ち画面に表示。
-ComboBoxに表示するのはAnimalのNameプロパティ。
-ViewModelに設定するのは選択されたAnimalのIdプロパティ。
**XAML [#v0e3726c]
#pre{{
<ComboBox ItemsSource="{Binding Animals}" Selecte...
DisplayMemberPath="Name" ...
SelectedValuePath="Id"
SelectedValue="{Binding AnimalId}"
/>
<Button Click="Button_Click">検証</Button>
}}
**Animal.cs [#aadecb3f]
#pre{{
public class Animal
{
public int Id { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", Id, Name);
}
}
}}
**ViewModel.cs [#o1a4ed7a]
#pre{{
public class SimpleComboBox2WindowViewModel :INotifyP...
{
public SimpleComboBox2WindowViewModel()
{
this.Animals = new ObservableCollection<Anima...
new Animal() {Id = 1, Name="ゾウ"},
new Animal() {Id = 2, Name="ライオン"},
new Animal() {Id = 3, Name="トラ"},
};
this.animalId = 2;
}
public ObservableCollection<Animal> Animals { get...
private int animalId;
public int AnimalId
{
get
{
return animalId;
}
set
{
if (animalId != value)
{
animalId = value;
this.NotifyPropertyChanged("AnimalId");
}
}
}
public void NotifyPropertyChanged(string property...
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChanged...
}
}
public event PropertyChangedEventHandler Property...
}
}}
ページ名: