Я недавно начал использовать инструментарий MVVM-Light и застрял в следующей проблеме: у меня есть базовый комбинированный блок Silverlight, который привязан к модели представления с набором ObservableCollection типа MyUser. В Combobox реализован пользовательский шаблон DataTemplate, объединяющий имя и фамилию пользователя. После загрузки списка пользователей, как настроить Combobox, чтобы выбрать первого пользователя в списке и отобразить этого выбранного пользователя в свернутом Combobox? Я знаю, что было предложено использовать свойство SelectedValue, но я не смог заставить его работать, используя SelectedItem или SelectedValue. Другими словами, даже если я установил SelectedValue / SelectedItem после загрузки списка пользователей, выбранный MyUser не отображается как выбранный в выпадающем списке, как мне этого добиться? Пожалуйста, смотрите XAML ниже:
<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");
}
}