2016-05-09 9 views
0

Может кто-нибудь объяснить мне, почему первое выражение привязки отсоединяют после я нажимаю объект checkBox3 ...Почему привязка выражения отключается в режиме OneWay?

<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> 

... где режим изменен на TwoWay в первом выражении привязки?

Я просто прошу объяснения. Я знаю, как опустить эту сложную ситуацию, и я знаю, как отлаживать связные выражения. Я нашел аналогичный пост here, но нет четкого ответа на мою общую проблему.

+0

'OneWay' обычно используется с' TextBlock' как Binding будет работать только в одну сторону, то есть от Source-> UIElement. – XAMlMAX

ответ

0

В первом сценарии checkbox1 имеет привязку OneWay, поэтому не может принимать изменения в его значение, кроме как с помощью checkbox2. Если checkbox3 пытается установить checkbox1, это приведет к аннулированию привязки и установит его как необработанное значение.

Если вы хотите checkbox3 установить CheckBox1 (который обновляет checkbox2) тогда, а не OneWay связывания вам необходимо OneWayToSource

 Смежные вопросы

  • Нет связанных вопросов^_^