我有必然的tbPublications
一個ObservableCollection其中填充,因爲它應該具有ComboBox。然後,我從另一個觸發創建我插入新記錄到tbPublications
形式,都好一個DataGrid選擇一行。組合框的SelectedIndex MVVM WPF
當我關閉所述創建表單並返回到我的ComboBox表單時,我正在清除並重新讀取我的ObservableCollection
中的一個新項目,並將用戶返回到他們剛創建的項目。 ComboBox然後顯示我新近填充的集合中的一個項目,都很好。
我的問題是,在返回我的組合框的形式,新的出版物中沒有被設置爲在組合框顯示所選項目,用戶必須點擊,然後下拉框中選擇項目。
在我看來,我不能使用SelectedIndex = "0"
XAML,因爲我想在頁面加載時在我的ComboBox中顯示整個ObservableCollection
。
有沒有辦法使用的視圖模型的方法也許要解決這個問題,事情也許如..
private void SetSelectedIndex()
{
if (MyObservableCollection.Count == 1)
{
//Set selected indexer to "0";
}
}
找到了解決這個,不知道這是否是最乾淨的「MVVM」解決方案...
在我的ObservableCollection看完後我調用這個方法:
if (_ModelPublicationsObservableList.Count == 1)
{
SelectedPublication = _ModelPublication;
SetSelectedIndex();
}
下面是它得到當前主窗口,並將selectedIndex方法:
private void SetSelectedIndex()
{
ArticlesDataGridWindow singleOrDefault = (ComboBoxWindow)Application.Current.Windows.OfType<ComboBoxWindow>().SingleOrDefault(x => x.IsLoaded);
singleOrDefault.comboBox1.SelectedIndex = 0;
}
+1。這幾乎總是去,除了在案件的方式在概念上的「選擇價值」是*的項目在'ComboBox'一個*性質(而不是項目本身),在這種情況下,人們可以使用'SelectedValue'和「SelectedValuePath」。在跟隨MVVM時幾乎沒有理由使用'SelectedIndex'。 –
是的,我的ViewModel中有一個SelectedPublication屬性。我的XAML設置爲'SelectedItem =「{Binding SelectedPublication,Mode = TwoWay}」',但ComboBox不顯示ObservableCollection中的第1行,我仍然需要點擊下拉列表並選擇它... – Hardgraf
編輯,可能不是最乾淨的MVVM解決方案... – Hardgraf