itemsSource
実行時に aを変更しようとしてcomboBox
います。この質問では、comboBox.itemssource...
. 私がする必要があるのは、新しいものを作成してからcomboBox
コマンドを呼び出すことだけであれば、それで問題ありません。ただし、comboBox
xaml を介してユーザー コントロールに既に存在する に対してこの操作を実行する必要があります。その場合、どのように参照すればよいでしょうか。コントロール内のプロパティにバインドする方法は知っていますが、この場合はコントロール全体を取得する必要があります。私はそれを考えすぎていますか?私が考えていることを行うための最良の方法は何ですか?
これは、現在コレクションを切り替える方法ですcomboBox
(これはすべてモデルレベルです):
//Property for Combo Box List
public ObservableCollection<string> ComboBoxList
{
get { return _comboBoxList; }
set
{
if (Equals(value, _comboBoxList)) return;
_comboBoxList = value;
OnPropertyChanged("ComboBoxList");
}
}
public string SelectedCommand
{
get { return _selectedCommand; }
set
{
_selectedCommand = value;
NotifyPropertyChange(() => SelectedCommand);
if (SelectedCommand == "String Value")
{
ComboBoxList = new ObservableCollection<string>(newList);
}
}
}
この実装を使用するとコレクションが切り替わりますが、は固執selectedItem
しcomboBox
ません。たとえば、別のコマンドをクリックしてから元に戻すと、ボックスにselectedItem
.
アップデート
selectedOperation
にバインドされているというプロパティがありますcomboBox
。これには、単純なゲッターとセッターが含まれており、NotifyPropertyChange
. これによりselectedItem
、ボックス内の が選択されたままになります。しかし、ユーザーが別のコマンドをクリックして で別の項目を選択するとcomboBox
、その新しい項目が代わりに使用されます。selectedItem
が保持するfor each コレクションを持つことができる必要がありcomboBox
ます。
例えば:
に A と Bの 2 つのコマンドがあるとしますlistBox
。それぞれが に異なるコレクションを作成しますcomboBox
。A は数値のコレクションを作成し、B は名前のコレクションを作成します。
コマンド A の場合、ユーザーは 5 を選択します。A を選択すると、comboBox
は 5 を表示するはずselectedItem
です。A -> 5
コマンド B では、ユーザーは Roger を選択します。B を選択すると、comboBox
はそのまま「ロジャー」と表示されselectedItem
ます。B -> ロジャー
現在、はユーザーがいつコマンドを切り替えたcomboBox
かを記憶していません。selectedItem