为什么绑定表达式在OneWay模式下会分离?

时间:2016-05-09 12:30:08

标签: wpf binding dependency-properties detach

在点击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,但我的一般问题没有明确的答案。

1 个答案:

答案 0 :(得分:0)

在第一个场景中,checkbox1具有OneWay绑定,因此除了通过checkbox2之外,不能接受对其值的更改。如果checkbox3尝试设置checkbox1,则它将使绑定无效,并将其设置为原始值。

如果你想复选框3设置复选框1(更新复选框2),而不是OneWay绑定,你需要OneWayToSource