【发布时间】:2017-07-28 08:31:50
【问题描述】:
当我使用ComboBox 或其他具有ItemsSource 和SelectedItem 属性绑定的控件时,每次在运行时的初始绑定以及每次绑定到ItemsSource 的集合发生变化时,我都会体验到内容绑定的SelectedItem 对象的数量已更改。
如何禁用此功能?
例如:
我有<ComboBox MinWidth="300" ItemsSource="{Binding AvailableMasters}" SelectedItem="{Binding SelectedMaster}">
当我运行应用程序时,SelectedMaster 属性被分配给AvailableMasters 中的第一项。此外,每次 AvailableMasters 集合更改(例如,通过为属性分配新集合)时,SelectedMaster 都会再次调整。
所需的行为是SelectedItem (SelectedMaster) 仅在最终用户用鼠标单击该项目/从ComboBox 或其他控件中选择该项目时填充/更改。
【问题讨论】:
-
您是否尝试过对 SelectedItem 属性进行 OneWayToSource 绑定?
-
如果你想在开始时只设置一次,只使用一次绑定模式。稍后选择将仅在用户选择时更改。你确定你选择的主人不会因为改变可用的主人而改变吗?如果是这种情况,请不要引发可用主人的属性更改事件,直到不需要。
-
@Ramankingdom,恐怕你误会了。当绑定到 ItemsSource 的属性发生更改时,我不希望 SelectedItem 受到影响。
-
是的,那么在这种情况下,保存可用的 master 并在源更新后重置它
-
@Clemens,谢谢,这回答了问题并且有效。虽然我决定标记答案,但 Rekshino 提供了,因为这似乎是更好的主意,因为它在绑定方面可以双向工作。有时我可能想在我的视图中有意地从视图模型中反映更改后的
SelectedItem。但是您的建议在我提出问题的范围内确实有效。谢谢
标签: wpf data-binding selecteditem itemssource