2016-09-16 12 views
0

これを動作させることはできません。ハンドラを工場に追加する

データグリッドの列を動的に設定する必要があります。

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」が例外をスローします:列の一つは、(thisライブラリから)DoubleUpDownオブジェクトとDataGridTemplateColumns

は、私はこのようなFrameworkElementFactoryを作成することですアプリケーションを実行しています。問題は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)); 
関連する問題