2012-10-19 53 views
0

我有一個ButtonUserControl按鈕不火的Click事件

<UserControl.Resources> 
    <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"> 
     <ContentPresenter /> 
    </ControlTemplate> 
</UserControl.Resources>  
<Button Template="{StaticResource ButtonTemplate}" Click="Button_Click" /> 

但是,如果我指定一個Template,這個按鈕不火的Click事件。
爲什麼?我怎麼解決這個問題?

代碼隱藏:

public event RoutedEventHandler Click; 

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    if (Click != null) 
     Click(sender, e); 
} 
+0

你能告訴我代碼隱藏文件中Button_Click的代碼嗎? –

+0

@ hbrock請參閱編輯 – Nick

+1

您是否設置了一個斷點來確認它沒有被觸發?還是它只是返回null? – aserwin

回答

2

你的按鈕模板是一個簡單的ContentPresenter。在你給我們的代碼中,你沒有在按鈕中放置任何東西,所以它沒有任何大小。點擊將不可能。

<Window x:Class="StackOverflow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow"> 

<Window.Resources> 
    <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"> 
     <ContentPresenter /> 
    </ControlTemplate> 
</Window.Resources> 

<Button Template="{StaticResource ButtonTemplate}" Click="Button_Click"> 
    <TextBlock Text="test" /> 
</Button> 

</Window> 

此代碼的工作原理,如果您點擊「測試」,按鈕的Click事件被正確觸發。我在一個窗口中完成了它,但在UserControl中它是一樣的。

如果您正在討論您的自定義Click事件,則只有在您附加了處理程序時纔會觸發它。

+0

所以,我必須設置按鈕的內容... – Nick

+0

是的,如果你想讓你的按鈕在你的UI中可見,並且可點擊! – Sisyphe

相關問題