Я привязываю данные к модели представления, и у меня возникают проблемы при инициализации комбинированного списка значением по умолчанию.Упрощение класса, который я использую в привязке, это
public class LanguageDetails
{
public string Code { get; set; }
public string Name { get; set; }
public string EnglishName { get; set; }
public string DisplayName
{
get
{
if (this.Name == this.EnglishName)
{
return this.Name;
}
return String.Format("{0} ({1})", this.Name, this.EnglishName);
}
}
}
. Комбо-бокс объявляется в XAML представления как
<ComboBox x:Name="LanguageSelector" Grid.Row="0" Grid.Column="1"
SelectedItem="{Binding SelectedLanguage,Mode=TwoWay}"
ItemsSource="{Binding AvailableLanguages}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayName}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
, и модель представления содержит этот код
private List<LanguageDetails> _availableLanguages;
private LanguageDetails _selectedLanguage;
public LoginViewModel()
{
_availableLanguages = LanguageManager.GetLanguageDetailsForSet(BaseApp.AppLanguageSetID);
_selectedLanguage = _availableLanguages.SingleOrDefault(l => l.Code == "en");
}
public LanguageDetails SelectedLanguage
{
get { return _selectedLanguage; }
set
{
_selectedLanguage = value;
OnPropertyChanged("SelectedLanguage");
}
}
public List<LanguageDetails> AvailableLanguages
{
get { return _availableLanguages; }
set
{
_availableLanguages = value;
OnPropertyChanged("AvailableLanguages");
}
}
В конце конструктора переменные _availableLanguages и _selectedLanguage устанавливаются, как и ожидалось, раскрывающийся список комбинированного списка содержит все элементы в _availableLanguages, но выбранное значение не отображается в комбинированном списке.Выбор элемента в раскрывающемся меню правильно отображает его и устанавливает свойство SelectedLanguage в модели представления.Точка останова в установщике показывает, что _selectedLanguage по-прежнему содержит то, к чему оно было инициализировано, до тех пор, пока оно не будет перезаписано значением.
Я подозреваю, что есть какая-то небольшая вещь, которую я пропускаю, но после попытки различных вещей и большого количества поиска в Google, яЯ все еще в тупике.Я мог бы достичь желаемого результата другими способами, но действительно хотел бы получить представление о правильном использовании привязки данных.