我正在使用WPFToolkit中的DoubleUpDown控件,我正在尝试使用ValueChanged创建一个事件处理程序。
DoubleUpDown dud = new DoubleUpDown();
dud.ValueChanged += new RoutedPropertyChangedEventHandler<double>(DoubleUpDown_ValueChanged);
private void DoubleUpDown_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
}
我收到错误消息
CS0029无法隐式转换类型 'System.Windows.RoutedPropertyChangedEventHandler double'来 'System.Windows.RoutedPropertyChangedEventHandler对象'
有关如何解决此问题以确保没有类型冲突的任何建议?感谢。
答案 0 :(得分:1)
我刚刚通过online source code进行了深入研究,看起来该事件的宣言是......
public event RoutedPropertyChangedEventHandler<object> ValueChanged
所以你的签名需要通过制作它来匹配......
private void DoubleUpDown_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
答案 1 :(得分:1)
正如错误所示,ValueChanged
期待RoutedPropertyChangedEventHandler<object>
,所以你必须这样做:
DoubleUpDown dud = new DoubleUpDown();
dud.ValueChanged += new RoutedPropertyChangedEventHandler<object>(DoubleUpDown_ValueChanged);
private void DoubleUpDown_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
}
在处理程序中,您必须将object
转换为double
。
注意:的
作者在源代码中留下了关于here:
的评论由于Visual Studio中的错误,您无法为其创建事件处理程序 XAML中的泛型T args,所以我必须使用object。
答案 2 :(得分:0)
这是你想要的吗?
dud.ValueChanged += DoubleUpDown_ValueChanged;
private void DoubleUpDown_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if(e != null && Math.Abs((double)e.NewValue) < 0.000000001d)
{
// for example
}
}
答案 3 :(得分:0)
我希望这会对您有所帮助
this.dud.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler<double>(this.dud_ValueChanged);
private void dud_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)