【发布时间】:2010-10-19 01:10:03
【问题描述】:
在我解释我的问题之前,请考虑以下对象:
Character.cs
-> AnimationControlSettings.cs
.. -> UpControlType (string)
.. -> AvailableControlTypes (List<string>)
我的 ViewModel 中的相关属性:
Character SelectedCharacter
ObservableCollection<Character> Characters
我有一个简单的视图,您可以在其中使用组合框选择一个字符。 ComboBox 的 SelectedItem 是双向绑定到 ViewModel 的 SelectedCharacter 属性的。当我在字符之间切换时,还有其他文本框/复选框(也双向绑定到 SelectedCharacter 的各种属性)保持它们的值。
问题存在于绑定到UpControlType属性的ComboBox中:
<ComboBox x:Name="lstUpControlTypes"
ItemsSource="{Binding Path=SelectedCharacter.AnimationControlSettings.AvailableControlTypes}"
SelectedItem="{Binding Path=SelectedCharacter.AnimationControlSettings.UpControlType, Mode=TwoWay}">
</ComboBox>
初始值正确显示在此 ComboBox 中,但当我从 CharacterA 切换到 CharacterB 时,CharacterA 的 UpControl 属性设置为 NULL,我不知道为什么。
这是这个确切问题的准系统重现(VS2010,SL4): http://www.checksumlabs.com/source/TwoWayBindingWorkshop.zip
如果您运行该解决方案,您会看到 Name 属性在您切换 Characters 时仍然存在,但 UpControlType 值设置为 NULL。
我在这里遗漏了什么明显的东西吗?
【问题讨论】:
标签: data-binding silverlight-4.0 combobox