Встроенный ComboBox в Button, но Button активирует событие click при активации раскрывающегося списка - PullRequest
0 голосов
/ 17 ноября 2011

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

Вот мой код WPF, который описывает мою кнопку и ее содержимое.

<Button FontSize="14" Height="32" HorizontalAlignment="Left" Click="DisableCopierButton_Click">
    <StackPanel Orientation="Horizontal">
        <Label Content="Disable Copier:" />
        <ComboBox Name="DisableCopierComboBox">
            <ComboBoxItem Content="1"/>
            <ComboBoxItem Content="2"/>
        </ComboBox>
    </StackPanel>
</Button>

Мой вопрос: когда я нажимаю на ComboBox и только на ComboBox, как я могу предотвратить прохождение события click через кнопку, которая находится под ним?

Ответы [ 3 ]

1 голос
/ 19 ноября 2011

Я наконец нашел это.Я пошел с решением, предоставленным Рэйчел здесь , хотя оно не было выбрано в качестве ответа.

private void EnableCopierButton_Click(object sender, RoutedEventArgs e)
{
   if (!(e.OriginalSource is Button))
   {
      // combo box was clicked, not the button, so get out of here.
      return;
   }
}
0 голосов
/ 18 ноября 2011

Вместо того, чтобы сделать поле со списком частью содержимого кнопки, вы можете попробовать создать ContentTemplate для кнопки, которая содержит поле со списком.

0 голосов
/ 17 ноября 2011

Это похоже на кнопку SplitButton, да.Не изобретай велосипед.Много реализаций в сети.
Я рекомендую WPF Toolkit Extended's .

...