CheckBox не проверено Событие, когда мышь нажимает на содержимое - PullRequest
1 голос
/ 02 августа 2010

У меня вопрос по CheckBox.Я не хочу, чтобы CheckBox запускал проверенное событие, когда пользователь нажимает на содержимое CheckBox.Я знаю, что могу установить IsHitTestVisible = False в ContentPresenter.

В настоящее время я не могу инициализировать свой CheckBox с помощью cb.IsChecked.Есть идеи по этому поводу?Или у кого-нибудь другая идея?

Заранее спасибо.

CU soltyr

Мой код XAML:

 <Style x:Key="CheckBoxStyle" x:Name="myCheckBoxStyle" TargetType="{x:Type CheckBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type CheckBox}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="16" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <CheckBox Grid.Column="0" Click="cb_Click">
                        </CheckBox>
                        <ContentPresenter Grid.Column="1"
                          Margin="5,0,0,0"
                          VerticalAlignment="Center"
                          HorizontalAlignment="Left"
                          IsHitTestVisible="False" />
                        </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter> 
    </Style>

Мой код C #

for (int i = 0; i < tcList.Count; i++)
        {
            lbi = new ListBoxItem();
            tc = (TableContent)tcList[i];
            cb = new CheckBox();
            cb.Style = (Style)FindResource("CheckBoxStyle");
            cb.Content = tc.test1;
            cb.IsChecked = tc.test2;
            lbi.Margin = new Thickness(0, 4, 0, 0);
            lbi.Content = cb;
            lbi.Selected += new RoutedEventHandler(lbi_Selected);
            lbi.KeyDown += new KeyEventHandler(lbi_KeyUp);
            lbi.KeyUp += new KeyEventHandler(lbi_KeyUp);
            lbTaster.Items.Add(lbi);
            ht.Add(i, tc.On_Off);
        }

1 Ответ

0 голосов
/ 02 августа 2010

Вы создали CheckBox, шаблон которого содержит второй CheckBox.Вы устанавливаете IsChecked на внешнюю, но это не влияет на внутреннюю.Самое простое решение - это привязать свойство IsChecked во внутреннем текстовом поле к свойству IsChecked во внешнем:

<CheckBox Grid.Column="0" Click="cb_Click" IsChecked="{Binding IsChecked, 
    RelativeSource={RelativeSource TemplatedParent}}">
</CheckBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...