C# WPF自定义事件处理程序

C# WPF自定义事件处理程序,c#,wpf,datepicker,eventhandler,C#,Wpf,Datepicker,Eventhandler,我已经实现了DatePicker的代码https://github.com/cmyksvoll/HighlightDatePicker但我无法在WPF中使用SelectedDateChanged,错误为ArgumentException:无法绑定到目标方法,因为其签名或安全透明性与委托类型的签名或安全透明性不兼容 我曾尝试为“SelectedDateChanged”创建自定义偶数处理程序,但HighlightDatePicker类是静态的,我无法注册它,以便在MainWindow中调用我的方法

我已经实现了DatePicker的代码
https://github.com/cmyksvoll/HighlightDatePicker
但我无法在WPF中使用SelectedDateChanged,错误为
ArgumentException:无法绑定到目标方法,因为其签名或安全透明性与委托类型的签名或安全透明性不兼容

我曾尝试为“SelectedDateChanged”创建自定义偶数处理程序,但HighlightDatePicker类是静态的,我无法注册它,以便在MainWindow中调用我的方法

WPF:

HighlightedDatePicker类:

    public class HighlightDatePicker : DatePicker
{
     static HighlightDatePicker()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(HighlightDatePicker), new FrameworkPropertyMetadata(typeof(HighlightDatePicker)));


    public static readonly DependencyProperty HighlightedDatesProperty = DependencyProperty.Register("HighlightedDates", typeof(IList<HighlightedDate>), typeof(HighlightDatePicker));



    public IList<HighlightedDate> HighlightedDates
    {
        get { return (IList<HighlightedDate>)GetValue(HighlightedDatesProperty); }
        set { SetValue(HighlightedDatesProperty, value); }
    }

    public static readonly DependencyProperty HighlightBrushProperty = DependencyProperty.Register("HighlightBrush", typeof(Brush),
        typeof(HighlightDatePicker), new PropertyMetadata(Brushes.Orange));

    public Brush HighlightBrush
    {
        get { return (Brush)GetValue(HighlightBrushProperty); }
        set { SetValue(HighlightBrushProperty, value); }
    }
}
public class HighlightedDate
{
    public HighlightedDate(DateTime date, string description)
    {
        Date = date;
        Description = description;
    }

    public DateTime Date { get; set; }
    public string Description { get; set; }
}
公共类HighlightDatePicker:DatePicker
{
静态HighlightDatePicker()
{
OverrideMetadata(typeof(HighlightDatePicker),new FrameworkPropertyMetadata(typeof(HighlightDatePicker));
public static readonly dependencProperty HighlightedDatesProperty=dependencProperty.Register(“HighlightedDates”、typeof(IList)、typeof(HighlightDatePicker));
公共IList HighlightedDates
{
get{return(IList)GetValue(HighlightedDatesProperty);}
set{SetValue(HighlightedDatesProperty,value);}
}
公共静态只读DependencyProperty HighlightBrushProperty=DependencyProperty.Register(“HighlightBrush”,typeof(Brush),
typeof(HighlightDatePicker),新的PropertyMetadata(Bruss.Orange));
公共电刷
{
获取{return(画笔)GetValue(HighlightBrushProperty);}
set{SetValue(HighlightBrushProperty,value);}
}
}
公共类HighlightedDate
{
公共高亮显示日期(日期时间日期,字符串描述)
{
日期=日期;
描述=描述;
}
公共日期时间日期{get;set;}
公共字符串说明{get;set;}
}

SelectedDateChanged事件的处理程序方法的正确签名为:

    private void ProviderDateChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        // fetch data to display
    }

在Visual Studio中写入SelectedDateChanged=“”,然后按Tab。VS将自动添加具有正确签名的方法。
    public class HighlightDatePicker : DatePicker
{
     static HighlightDatePicker()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(HighlightDatePicker), new FrameworkPropertyMetadata(typeof(HighlightDatePicker)));


    public static readonly DependencyProperty HighlightedDatesProperty = DependencyProperty.Register("HighlightedDates", typeof(IList<HighlightedDate>), typeof(HighlightDatePicker));



    public IList<HighlightedDate> HighlightedDates
    {
        get { return (IList<HighlightedDate>)GetValue(HighlightedDatesProperty); }
        set { SetValue(HighlightedDatesProperty, value); }
    }

    public static readonly DependencyProperty HighlightBrushProperty = DependencyProperty.Register("HighlightBrush", typeof(Brush),
        typeof(HighlightDatePicker), new PropertyMetadata(Brushes.Orange));

    public Brush HighlightBrush
    {
        get { return (Brush)GetValue(HighlightBrushProperty); }
        set { SetValue(HighlightBrushProperty, value); }
    }
}
public class HighlightedDate
{
    public HighlightedDate(DateTime date, string description)
    {
        Date = date;
        Description = description;
    }

    public DateTime Date { get; set; }
    public string Description { get; set; }
}
    private void ProviderDateChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        // fetch data to display
    }