Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 按钮中嵌入了组合框,但按钮在激活下拉菜单时会窃取单击事件_Wpf_Button_Combobox_Click - Fatal编程技术网

Wpf 按钮中嵌入了组合框,但按钮在激活下拉菜单时会窃取单击事件

Wpf 按钮中嵌入了组合框,但按钮在激活下拉菜单时会窃取单击事件,wpf,button,combobox,click,Wpf,Button,Combobox,Click,我有一个屏幕空间有限的应用程序,所以我试图通过在按钮中放置一个组合框来节省一些空间。它非常漂亮,看起来和我想要的一模一样。问题是,每次我单击组合框上的向下箭头时,该按钮也会收到一个单击事件。下拉菜单仍然正常工作,但在我有机会真正选择我想要的东西之前,我的按钮已经启动了 下面是我的WPF代码,它描述了我的按钮及其内容 <Button FontSize="14" Height="32" HorizontalAlignment="Left" Click="DisableCopierButton_

我有一个屏幕空间有限的应用程序,所以我试图通过在按钮中放置一个组合框来节省一些空间。它非常漂亮,看起来和我想要的一模一样。问题是,每次我单击组合框上的向下箭头时,该按钮也会收到一个单击事件。下拉菜单仍然正常工作,但在我有机会真正选择我想要的东西之前,我的按钮已经启动了

下面是我的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>


我的问题是,当我只点击组合框时,如何防止点击事件通过它下面的按钮?

这看起来像一个拆分按钮,是的。不要重新发明轮子。在web上有很多实现。

我建议。

与其让组合框成为按钮内容的一部分,不如尝试为按钮创建包含组合框的内容模板。

我终于找到了它。我同意Rachel提供的解决方案,尽管它没有被选为答案

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

您可能希望了解一些WPF SplitButton实现,嗯,我对导入第三方解决方案不感兴趣,这样我就可以在按钮中放置一个组合框。我相信有办法做到这一点。互联网上还有很多其他的解决方案。