Ограниченный флажок не срабатывает - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть флажок, где свойство проверяется, привязан к другому флажку.В блоке ресурсов я установил стиль, который устанавливает триггер события для флажка.Вот код:

<Style x:Key="cbClickEvent" TargetType="{x:Type CheckBox}">
   <EventSetter Event="Click" Handler="CheckBox_Click"/>
</Style>

<StackPanel Grid.Column="0" Grid.Row="1">
   <CheckBox x:Name="cbAll" Content=" All" VerticalAlignment="Center"/>
   <CheckBox Content=" MyCB" VerticalAlignment="Center" IsChecked="{Binding ElementName=cbAll, Path=IsChecked, Mode=OneWay}" Style="{StaticResource cbClickEvent}"/>
</StackPanel>

Когда я нажимаю флажок MyCB, событие запускается, но не тогда, когда я нажимаю флажок Все.Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Это связано с тем, что при установке флажка «Все» значение передается в флажок «MyCB» через привязку. Но в стиле вы подписываетесь на событие Click, которое в данном случае явно не запускается, потому что вы на самом деле не нажимаете флажок «MyCB» (вы нажимаете «Все»).

Вы можете вместо подписки на событие Click подписаться на события Checked и Unchecked:

<EventSetter Event="Checked" Handler="CheckBox_Checked"/>
<EventSetter Event="Unchecked" Handler="CheckBox_Unchecked"/>
0 голосов
/ 20 апреля 2011

2 возможных решения:

1) Добавить

Style="{StaticResource cbClickEvent}"

На cbAll CheckBox

2) Удалите эту строку из MyCB CheckBox и удалите свойство x: Key из стиля. Это будет выглядеть так:

<Window.Resources>
    <Style TargetType="{x:Type CheckBox}">
        <EventSetter Event="Click" Handler="CheckBox_Click"/>
    </Style>
</Window.Resources>


<StackPanel Grid.Column="0" Grid.Row="1">
    <CheckBox x:Name="cbAll"
              Content=" All"
              VerticalAlignment="Center" />
    <CheckBox Content=" MyCB"
              VerticalAlignment="Center"
              IsChecked="{Binding ElementName=cbAll, Path=IsChecked, Mode=OneWay}" />
</StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...