1
我一直堅持這個問題幾個小時...我想要做的其實很簡單 - 在ComboBox中設置一個默認選定的項目(我正在使用MVVM模式)。在WPF MVVM應用程序的組合框中設置一個默認的選定項目
我已經在我看來,組合框下面的XAML代碼:
<ComboBox ItemsSource="{Binding Schools}"
DisplayMemberPath="Acronym"
SelectedValue="{Binding SelectedSchool}"
SelectedValuePath="Id"
/>
在我的ViewModel,我有一個ObservableCollection,學校:
public ObservableCollection<School> Schools { get; private set; }
public CourseFormViewModel()
{
Schools = new ObservableCollection<School>();
try
{
// Gets schools from a web service and adds them to the Schools ObservableCollection
PopulateSchools();
}
catch (Exception ex)
{
// ...
}
}
public int SelectedSchool
{
get { return schoolId; }
set
{
schoolId = value;
OnPropertyChanged("SelectedSchool");
}
}
最後,學校是一個簡單的業務對象:
[DataContract]
public class School
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Acronym { get; set; }
[DataMember]
public string Name { get; set; }
}
問題是,當應用程序啓動時,組合框沒有得到一個默認值。我已經嘗試在XAML中將SelectedIndex設置爲0,但無濟於事。我已經嘗試在代碼隱藏(其工作)中的Window_Loaded事件處理程序中設置SelectedIndex,但由於我使用MVVM模式,感覺有點髒。我對這整個WPF/MVVM的東西還是一個新的東西,所以如果有人能指出我正確的方向,我會很感激。
'學校'是'學校'類型的,而'SelectedSchool'是'int'類型的?可能這是你的問題? – GameScripting
嗯,我改變了SelectedSchool屬性返回學校,而不是int,但它沒有任何區別。我需要改變什麼嗎? – William
嗯,唯一可能出錯的是...... SelectedSchool是'Schools'集合的一部分?如果沒有,那麼你必須自己做更多的研究。 – GameScripting