2016-09-16 74 views
0

我無法獲得此工作。添加處理程序到工廠

我需要動態設置數據網格的列。其中一列的是具有DoubleUpDown對象DataGridTemplateColumns(從this庫)

我創建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方法中,如果我評論該行可以正常工作,但顯然我需要附加一個事件來執行值更改時的操作。

任何人都可以幫助我嗎?在此先感謝

回答

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));