在点击checkBox3对象后,有没有人能解释为什么第一个绑定表达式被分离...
<StackPanel>
<CheckBox x:Name="chackBox1" Content="CheckBox1"
IsChecked="{Binding ElementName=chackBox2, Path=IsChecked, Mode=OneWay}" />
<CheckBox x:Name="chackBox2" Content="CheckBox2" IsChecked="False" />
<CheckBox x:Name="chackBox3" Content="CheckBox3"
IsChecked="{Binding ElementName=chackBox1, Path=IsChecked, Mode=TwoWay}" />
</StackPanel>
...并且在以下情况中不会发生......
<StackPanel>
<CheckBox x:Name="chackBox1" Content="CheckBox1"
IsChecked="{Binding ElementName=chackBox2, Path=IsChecked, Mode=TwoWay}" />
<CheckBox x:Name="chackBox2" Content="CheckBox2" IsChecked="False" />
<CheckBox x:Name="chackBox3" Content="CheckBox3"
IsChecked="{Binding ElementName=chackBox1, Path=IsChecked, Mode=TwoWay}" />
</StackPanel>
...在第一个绑定表达式中将Mode更改为TwoWay?
我只想要一个解释。我知道如何省略这种棘手的情况,我知道如何调试绑定表达式。我找到了类似的帖子here,但我的一般问题没有明确的答案。
答案 0 :(得分:0)
在第一个场景中,checkbox1具有OneWay
绑定,因此除了通过checkbox2之外,不能接受对其值的更改。如果checkbox3尝试设置checkbox1,则它将使绑定无效,并将其设置为原始值。
如果你想复选框3设置复选框1(更新复选框2),而不是OneWay
绑定,你需要OneWayToSource