0

我无法让它工作。

我需要动态设置数据网格的列。其中一列是带有 DoubleUpDown 对象的 DataGridTemplateColumns (来自库)

我创建FrameworkElementFactory这样的:

FrameworkElementFactory factory3 = new FrameworkElementFactory(typeof(DoubleUpDown));
factory3.SetValue(DoubleUpDown.ValueProperty, binding);
factory3.AddHandler(DoubleUpDown.ValueChangedEvent, new RoutedEventHandler(UnitsChanged));

public void UnitsChanged(object sender, RoutedEventArgs e)
    {
        //do stuff with e.OriginalSource
    }

这会在运行应用程序时引发“System.Windows.Markup.XamlParseException”类型的异常。问题出在 AddHandler 方法中,如果我评论该行它工作正常,但显然我需要在该处附加一个事件以在值更改时执行操作。

任何人都可以帮助我吗?提前致谢

4

1 回答 1

0

处理程序类型无效。您应该使用 RoutedPropertyChangedEventHandler:

public void UnitsChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
     //do stuff with e.OriginalSource
     Console.WriteLine(0);
}

FrameworkElementFactory factory3 = new FrameworkElementFactory(typeof(DoubleUpDown));
                    factory3.SetValue(DoubleUpDown.ValueProperty, 10.0);
                    factory3.AddHandler(DoubleUpDown.ValueChangedEvent, new RoutedPropertyChangedEventHandler<object>(UnitsChanged));
于 2016-12-13T10:53:37.007 回答