Добавить обработчик на завод
Я не могу заставить это работать.
Мне нужно динамически настроить столбцы для сетки данных. Один из столбцов - это 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));