我有一个 WPF 用户控件的丑陋竞争条件,它是某种扩展的 ComboBox:UserControl 主要定义了两个可绑定的 DependencyProperties,一个是选定项,另一个是列表,可以从中选择选定项。两者都是可绑定的,因此可以使用或不使用选定项来初始化控件,并且可以通过绑定更改两个属性(在 DataContext 更改时),进一步的选择可能会由于用户交互而更改。UserControl 包含一个 ComboBox,其 ItemsSource 和 SelectedItem 与我的列表属性和 UserControl 的 SelectedItem 同步 - 到目前为止一切顺利。现在的问题是,如果在设置具有两个值的新 DataContext 时从外部(准同时)更改两个属性,
简而言之:我需要找到一种方法在列表更新期间“锁定”我的 SelectedItem - 但仅观察 PropertyChanged-Events 是不够的,因为我在更新后收到它们,而要记住的状态已经丢失。此外,我无法确定选择更改是由用户还是由(正确)绑定或(不希望)间接由其他绑定引起的......我想我需要一些 BeforePropertyChanged 或 OnPropertyChanging 事件用于我的 DependencyProperties - 或其他管理两个属性同时更新的顺序的方法。
欢迎任何建议:)
请注意,我说的是从中选择项目的列表,但实际上它是一些更复杂的结构,可以快速排序和过滤,这也是我在这里不使用 ItemsControl 的原因,但我不觉得那是与问题相关。