Button中嵌入了ComboBox,但在激活下拉菜单时,Button会窃取点击事件

时间:2011-11-17 19:08:34

标签: wpf button combobox click

我的应用程序屏幕空间有限,所以我试图通过在按钮内放置一个组合框来节省一些空间。它很漂亮,看起来就像我想要的样子。问题是,每次单击组合框上的向下箭头时,Button也会收到一个单击事件。下拉菜单仍然可以正常工作,但在我有机会实际选择我想要的内容之前,我的按钮已经解雇了。

这是我的WPF代码,它描述了我的Button及其内容。

<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时,如何阻止点击事件通过其下方的按钮?

3 个答案:

答案 0 :(得分:1)

我终于找到了它。我选择了Rachel here提供的解决方案,即使它没有被选为答案。

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

答案 1 :(得分:0)

这看起来像是SplitButton,是的。不要重新发明轮子。网上有很多实现。
我推荐WPF Toolkit Extended's

答案 2 :(得分:0)

您可能想尝试为包含组合框的按钮创建ContentTemplate,而不是将组合框作为按钮内容的一部分。