2014-01-20 3 views
0

У меня проблема с пользовательской кнопкой WPF - всякий раз, когда я нажимаю на нее, она получает событие click, но, похоже, не переключается (не останавливается, когда я нажимаю на другую кнопку). Я пробовал все, о чем я могу думать, и до сих пор не могу заставить его работать.WPF togglebutton

Одна странная вещь, которую я заметил, заключается в том, что, когда я помещал точку останова в обработчик MouseDown и просто нажимал F5, чтобы продолжить в этот момент, кнопка переключается и остается внизу. Это заставляет меня думать, что это какой-то фокус-вопрос?

<ToggleButton Name="ToggleButton" PreviewMouseDown="ToggleButton_MouseDown_1" IsThreeState="False"> 
    <StackPanel Orientation="Vertical"> 
     <Label Content="Single" FontSize="15" FontWeight="Medium"/> 
     <Label Content="Speaker"/> 
    </StackPanel> 
</ToggleButton> 

private void ToggleButton_MouseDown_1(object sender, MouseButtonEventArgs e) 
{ 
    ToggleButton.IsChecked = !ToggleButton.IsChecked; 
} 

    private void ToggleButton_MouseDown_1(object sender, MouseButtonEventArgs e) 
{ 
    ToggleButton.IsChecked = !ToggleButton.IsChecked; 
} 

Помощь? :)

+1

Контролирует ли элемент управления ToggleButton свойство IsChecked? Я не работал с этим раньше, я просто предполагаю, что ваши события меняют поведение. –

+0

Это действительно устранило проблему. Однако это не работает в моем случае - см. - я использую эти кнопки (по 2 или 3 за раз) в собственном контроле, где, если вы проверяете 1 кнопку, она переключает остальное на непроверенное состояние. Есть ли способ иметь обработчики событий и все еще работать? Какова фактическая причина проблемы? (Я новичок в WPF). Спасибо! :) – Ross

ответ

2

Как @Nick сказал в своем комментарии, просто удалите обработчик событий PreviewMouseDown="ToggleButton_MouseDown_1" и он должен работать нормально.

Если это не так, у вас должен быть другой код, вызывающий проблему.

+0

Это действительно устранило проблему. Однако это не работает в моем случае - см. - я использую эти кнопки (по 2 или 3 за раз) в собственном контроле, где, если вы проверяете 1 кнопку, она переключает остальное на непроверенное состояние. Есть ли способ иметь обработчики событий и все еще работать? Какова фактическая причина проблемы? (Я новичок в WPF). Спасибо! :) – Ross

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