我在ListBox
数据绑定和不变性方面遇到了一些问题。我有一个模型提供List
的一些元素和一个ViewModel,它接受这些元素并将它们放到绑定到ObservableCollection
的{{1}}。
然而,这些元素不可变,因此当它们发生变化时 - 当用户更改ListBox
的选择或在其他一些场景中发生时 - 模型会触发事件并且ViewModel会检索新ListBox
个新元素实例并重新填充List
。
这种方法效果很好 - 尽管显然不是最佳的 - 当用户通过鼠标(点击)与ObservableCollection
交互但在使用键盘时失败可怕(选项卡聚焦当前元素然后使用鼠标箭头或进一步标记)。出于某种原因,ListBox
始终会重置为ActiveSchema
[*]的第一个元素。
为模式用户切换到Schemas
setter,然后为null,最后再次为第一个值。出于某种原因,当通过鼠标调用时,最后两个事件都不会发生。
PS:可以找到完整代码here
PPS:我知道我应该重新修改模型,以便公开ActiveSchema
变异,但是有理由为什么抛弃一切并从头开始创建它只是更可靠。
ObservableCollection