我的应用程序屏幕空间有限,所以我试图通过在按钮内放置一个组合框来节省一些空间。它很漂亮,看起来就像我想要的样子。问题是,每次单击组合框上的向下箭头时,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时,如何阻止点击事件通过其下方的按钮?
答案 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,而不是将组合框作为按钮内容的一部分。