c# - 自定义按钮异常
问题描述
我是 WPF 和 C# 开发的新手。我正在尝试基于标准 WPF 按钮创建自己的按钮类。
public class _BaseButton : Button
{
public _BaseButton() : base()
{
}
}
然后我尝试将它放在 XAML 中的 Window 中。
<Window x:Class="Sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Sample"
Title="MainWindow" Height="350" Width="525">
<Grid >
<local:_BaseButton Height="30" Width="100" Content="I am crashing" VerticalAlignment="Center" PreviewMouseLeftButtonDown="simpleButtonDetailCancelButton_PreviewMouseLeftButtonDown"/>
</Grid>
</Window>
如您所见,在 XAML 代码中,我定义了 PreviewMouseLeftButtonDown 事件的处理程序。它在后面的窗口代码中实现。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void simpleButtonDetailCancelButton_PreviewMouseLeftButtonDown(object sender, RoutedEventArgs e)
{
}
}
这样一个简单的应用程序的构建完成没有错误。当我运行应用程序时,它会崩溃并出现以下两个异常:
System.Windows.Markup.XamlParseException:无法从文本 simpleButtonDetailCancelButton_PreviewMouseLeftButtonDown 创建 PreviewMouseLeftButtonDown。第 7 行和第 10 行位置。
ArgumentException:无法绑定到目标方法,因为它的签名或安全透明度与委托类型的不兼容。
你能解释一下我做错了什么吗?事件处理程序的定义有问题PreviewMouseLeftButtonDown
,或者基类中缺少它,但我不知道我必须做些什么来修复它。
解决方案
将事件处理程序的第二个参数的类型更改为MouseButtonEventArgs
:
private void simpleButtonDetailCancelButton_PreviewMouseLeftButtonDown(object sender,
MouseButtonEventArgs e)
{
}
推荐阅读
- ios - 如何将总距离添加到 HKLiveWorkouts
- amazon-web-services - 使用 grafana 访问远程 kubernetes 集群
- c# - 使用带有 Kerberos 令牌的 SAML 2.0 SSO 的 .NET 桌面(非 Web)应用程序
- java - Post Redirect Get 似乎正在工作,但结果 JSP 不显示任何内容
- c++ - 提高 mmap memcpy 文件读取性能
- angular - 使用 Angular 指令添加引导弹出框
- azure-devops - 跨团队管理 Azure Devops (VSTS) PAT
- vue.js - 无法使用 Vue 和 Axios 查询 AWS API
- r - 在 Wikipedia 上复制与高斯分布相关的图
- jquery - 使用 jQuery 更改背景颜色与渐变动画