2011-11-17 38 views
0

我有一個屏幕空間有限的應用程序,所以我試圖通過在按鈕內放置組合框來節省一些房地產。它非常漂亮,看起來完全像我想要的樣子。問題是,每次單擊組合框上的向下箭頭時,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> 

我的問題是,當我點擊組合框,只有組合框,我該如何防止點擊事件穿過按鈕是它的下面?

+0

您可能想看看一些WPF SplitButton實現。 [Here](http://www.codeproject.com/KB/WPF/WpfSplitButton.aspx),[這裏](http://wpftoolkit.codeplex.com/wikipage?title=SplitButton&referringTitle=Home) –

回答

0

我終於找到它了。我選擇了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; 
    } 
} 
0

這看起來像是一個SplitButton,是的。不要重新發明輪子。網絡上的大量實現。
我建議WPF Toolkit Extended's

+1

呃,不是真的有興趣導入第三方解決方案,以便我可以在按鈕中放置組合框。我敢肯定,有一種方法可以做到這一點。 – Ultratrunks

+0

Right-o。互聯網上還有很多其他解決方案。 –

0

您可能想要嘗試爲包含組合框的按鈕創建ContentTemplate,而不是將組合框設置爲按鈕內容的一部分。