Wpf 按钮中嵌入了组合框,但按钮在激活下拉菜单时会窃取单击事件
我有一个屏幕空间有限的应用程序,所以我试图通过在按钮中放置一个组合框来节省一些空间。它非常漂亮,看起来和我想要的一模一样。问题是,每次我单击组合框上的向下箭头时,该按钮也会收到一个单击事件。下拉菜单仍然正常工作,但在我有机会真正选择我想要的东西之前,我的按钮已经启动了 下面是我的WPF代码,它描述了我的按钮及其内容Wpf 按钮中嵌入了组合框,但按钮在激活下拉菜单时会窃取单击事件,wpf,button,combobox,click,Wpf,Button,Combobox,Click,我有一个屏幕空间有限的应用程序,所以我试图通过在按钮中放置一个组合框来节省一些空间。它非常漂亮,看起来和我想要的一模一样。问题是,每次我单击组合框上的向下箭头时,该按钮也会收到一个单击事件。下拉菜单仍然正常工作,但在我有机会真正选择我想要的东西之前,我的按钮已经启动了 下面是我的WPF代码,它描述了我的按钮及其内容 <Button FontSize="14" Height="32" HorizontalAlignment="Left" Click="DisableCopierButton_
<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实现,嗯,我对导入第三方解决方案不感兴趣,这样我就可以在按钮中放置一个组合框。我相信有办法做到这一点。互联网上还有很多其他的解决方案。