Добавить обработчик на завод

Я не могу заставить это работать.

Мне нужно динамически настроить столбцы для сетки данных. Один из столбцов - это DataGridTemplateColumns с объектом DoubleUpDown (из этой библиотеки).

Я создаю 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, если я прокомментирую эту строку, она работает нормально, но, очевидно, мне нужно прикрепить событие, чтобы делать вещи, когда значение изменяется.

Кто-нибудь может мне помочь? заранее спасибо

1 ответ

Тип обработчика недействителен. Вы должны использовать 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));
Другие вопросы по тегам