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