Прежде чем я объясню свою проблему, рассмотрим следующий объект:
Character.cs
-> AnimationControlSettings.cs
.. -> UpControlType (string)
.. -> AvailableControlTypes (List<string>)
Соответствующие свойства в моей ViewModel:
Character SelectedCharacter
ObservableCollection<Character> Characters
У меня есть простой вид, где вы выбираете символ с помощью ComboBox. SelectedItem ComboBox привязан к двухстороннему соединению со свойством ViewModel SelectedCharacter. Существуют другие текстовые поля / флажки (также двусторонне связанные с различными свойствами SelectedCharacter), которые правильно сохраняют свои значения при переключении между символами.
Проблема существует в ComboBox, связанном со свойством UpControlType:
<ComboBox x:Name="lstUpControlTypes"
ItemsSource="{Binding Path=SelectedCharacter.AnimationControlSettings.AvailableControlTypes}"
SelectedItem="{Binding Path=SelectedCharacter.AnimationControlSettings.UpControlType, Mode=TwoWay}">
</ComboBox>
Начальные значения отображаются в этом ComboBox правильно, но как только я переключаюсь с CharacterA на CharacterB, свойство UpControl CharacterA устанавливается в NULL, и я не знаю почему.
Вот репродукция скелетона этой точной проблемы (VS2010, SL4):
http://www.checksumlabs.com/source/TwoWayBindingWorkshop.zip
Если вы запустите это решение, вы увидите, что свойство Name сохраняется при переключении символов, но значение UpControlType становится равным NULL.
Я что-то упускаю здесь очевидное?