2012-04-11 11 views
0

データバインドされたTreeViewを使用すると、選択したTreeViewItemにどのようにアクセスできますか?TreeViewのSelectedItemからTreeViewItemを取得する方法

+0

1.ナレッジスティックをフォーマットに共有する場合は、これは問題ではありません。質問をして**個別に答えてください**。あなたは本当にこれをしてはいけません(私的なメンバーにアクセスするためにリフレクションを使用してください)。 –

+0

リフレクションを使用するかどうかは誰もが自分自身を決定する必要があります。私はいつもあなたが思っているほど悪くはないと思う。いくつかの問題は、それがなければきれいには解決できません(ボックスの外でサポートされていないコントロール用のツールバーの新しいスタイルキーを与える - >パブリックシンボルのソースコードのコメントは、MSが使用するソリューションが必ずしも – SACO

答えて

-2

TreeViewがDataBoundであっても、TreeViewから選択したTreeViewItemを簡単に取得する方法が見つかりました。鍵は少しの反省です。

private static FieldInfo _selectedContainer = typeof(TreeView).GetField("_selectedContainer", BindingFlags.NonPublic | BindingFlags.Instance); 

public static TreeViewItem GetSelectedContainer(this TreeView treeView) 
{ 
    return (TreeViewItem)_selectedContainer.GetValue(treeView); 
} 

私はこれが誰かを助けることを望みます。

+0

MSの公式な方法:http://msdn.microsoft.com/en-us/library/ff407130.aspx – SACO

+0

あなたのコメントは本当に有用ではありません。少なくとも理由を記入し、「反映」を使用しているため、投票だけではなく、通常のソリューションのパフォーマンスが遅くなるため、実際に大きな木を使って作業する場合、時間がかかることがあります。デフォルトのツリーの動作は、必ずしも必要なものではありません。あなた自身のコントロールを直接書くのではなく、そこにある可能性を使うのはなぜですか? – SACO

+3

フレームワーククラスのプライベートメンバーにアクセスすることは絶対に悪いことです。マイクロソフトがフレームワークの実装を変更することを決定したとき、あなたのソフトウェアはどのように反応しますか?ソフトウェアがすでに顧客に提供されている場合はどうなりますか?あるいは、最低限の堅牢性を備えたプロダクションソフトウェアを作成しないでください。ここでは、あなたの単純な品質要求を伝播しないことを強くお勧めします。 – Clemens

関連する問題