我最近開始使用MVVM-Light工具箱,並且遇到以下問題:我有一個基本的Silverlight組合框,它綁定到具有MyUser類型的ObservableCollection的viewmodel。 Combobox實現了一個自定義的DataTemplate來組合用戶的姓名。加載用戶列表後,如何設置Combobox來選擇列表中的第一個用戶,並在摺疊的Combobox中顯示這個選定的用戶?我知道已經建議使用SelectedValue屬性,但我無法使用SelectedItem或SelectedValue來使其工作。換句話說,即使我在加載用戶列表後設置了SelectedValue/SelectedItem,選擇的MyUser不會在組合框中顯示爲選中狀態,但我該如何實現呢?請參閱下面的XAML:Silverlight 4 Combobox與使用MVVM-Light的selectedValue
<ComboBox
ItemsSource="{Binding MyUsers, Mode=OneWay}"
SelectedItem="{Binding SelectedUser, Mode=TwoWay}"
IsEnabled="{Binding IsReady}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"></TextBlock>
<TextBlock Text=" "></TextBlock>
<TextBlock Text="{Binding Surname}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
視圖模型代碼如下:
public ObservableCollection<MyUser> MyUsers
{
get
{
return myUsers;
}
set
{
if (myUsers == value)
{
return;
}
myUsers = value;
SelectedUser = myUsers.FirstOrDefault();
IsReady = true;
RaisePropertyChanged("MyUsers");
}
}
public MyUser SelectedUser
{
get
{
return selectedUser;
}
set
{
if (selectedUser == value)
{
return;
}
selectedUser = value;
RaisePropertyChanged("SelectedUser");
}
}