我在 UserControl
中有一个 Button
:
<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);
}
最佳答案
您的按钮模板是一个简单的 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 事件。我在窗口中完成了它,但在用户控件中是相同的。
如果您正在谈论自定义点击事件,则仅当您在其上附加处理程序时才会触发该事件。
关于c# - 按钮不会触发 Click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976292/