これが私のTreeViewの「ItemSource」であるObservableCOllectionです:
ObservableCollection<Tuple<string, object>>
私は今SelectedItemChanged
イベントを書いているのですが、次の問題が発生しました。私が試した限りでは、関数宣言のためにそれ以外のものを取得することはできません:
private void plugin_Selected(object sender, RoutedPropertyChangedEventArgs<object> e)
(そして私はxamlで次のコードを取得しました:
SelectedItemChanged="plugin_Selected"
)。
事は私がするときそれです
e.NewValue.GetType()
もちろん取得しましたTuple<string, object>
が、plugin_SelectedでItem2(タプルのオブジェクト)にアクセスする必要があります。頭に浮かんだ論理的なことは、関数を次のように書き直すことでした。
private void plugin_Selected(object sender, RoutedPropertyChangedEventArgs<Tuple<string, object>> e)
しかし、次のエラーが発生しました:
No overload for 'plugin_Selected' matches delegate 'System.Windows.RoutedPropertyChangedEventHandler<object>'
では、タプルのItem1(文字列)とItem2(オブジェクト)の値にアクセスするにはどうすればよいですか?
編集:私は問題を解決する方法であるかもしれないこのテストを得ました
if (e.NewValue.GetType() == typeof(Tuple<string, object>))
しかし、私は次に何をすべきかわかりません:のような何かを引き起こします:
object MyObject = = e.NewValue.Item2;
コンパイルされません...:(