2012-10-19 51 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

相关问题