这感觉像是应该非常明显的问题之一,但目前我还没有找到答案。
我有一些类似于以下内容的 XAML:
<CheckBox IsChecked="{Binding ShouldCopySettings}"/>
<ComboBox SelectedItem="{Binding CopySettingsFrom}"
ItemsSource="{Binding Source={StaticResource GroupedItems}">
<ComboBox.GroupStyle>
<StaticResource ResourceKey="ItemGroupStyle"/>
</ComboBox.GroupStyle>
</ComboBox>
这ItemsSource
是CollectionViewSource
使用GroupDescriptions
; 我不确定这是否是一个因素。
对于具有基本实现的底层 ViewModel 对象,一切都按预期运行。属性初始状态ShouldCopySettings
为假,属性初始状态CopySettingsFrom
为空。一个意外(但可以容忍)的行为是组合框似乎在分配父 DataContext 时自动选择列表中的第一项,并相应地触发CopySettingsFrom
属性的设置器。
但是现在我想让它在用户从组合框中进行选择时自动勾选复选框。我的第一个倾向是ShouldCopySettings
从属性的设置器中将true 分配给CopySettingsFrom
属性——这确实有效。
但是由于上面提到的初始化问题,当最初分配 DataContext 时(发生在此视图模型的控制之外),这将始终导致勾选复选框并设置ShouldCopySettings
为 true,而不管其在数据源中的初始状态如何,这显然是不可接受的.
所以我正在寻找一种方法来检测它正在初始化组合,以便我可以避免更改复选框属性,或者寻找一种更好的方法来链接它们。