2011-07-14 5 views
1

私は現在、階層的な方法で日付を表示するプロジェクトに取り組んでいます。私は3つの階層レベルを持つツリー(リスト)ビュー(Riccioloからのビュー)を使用しています。 TLVのItemsSourceはリストです。Tree(List)Viewアイテムの親を取得する方法?

1st level = typeof(Game) 
2nd level = typeof(Partner) 
3rd level = typeof(Channel) 

すべて表示されていますが、問題があります。私は選択された項目の編集モードを開始したいが、それ故に、選択された項目があるかどうか、そしてどの親があるかを知る必要がある。 私はすでに、次のアプローチを試してみました:

TreeViewItem myItem = e.OriginalSource as TreeViewItem; 
if (myItem != null) { 
    ItemsControl parent = ItemsControl.ItemsControlFromItemContainer(myItem); 
    if (parent != null) { 
    //Put your logic here. 
    } 
} 

ここでの問題は関係なく、私が選択した項目、ではない、「MYITEM」は常にnullになります。

誰かが正しい方向に向いていますか?事前に

Thxをは、挨拶

答えて

0

あなたはとてもe.OriginalSourceasを使用して安全なキャストを使用するには、ブレークポイントを設定し、デバッガを使用して、それが何であるかを見る、TreeViewItemではありません。

+0

これはまさに私の問題です。 e.OriginalSourceは、3つの可能性のうちの1つでなければなりません。ゲーム、パートナー、チャンネルのいずれかであり、それを見つけることは問題ありません。現在選択されているアイテムが現在選択されているアイテムの親であることはわかりません。 – Schlurb

+0

あなたの 'sender'は何ですか?それは視覚的表現に関連するコントロールではありませんか? –

+0

**送信者**は私のTreeListViewコントロールです。私の問題は、依存関係オブジェクトをパラメータとして使用しているため、ビジュアルツリーを「歩き回る」方法がわかりません。 – Schlurb

2

実際には、アプリケーションでMVVMパターンを使用する必要があります。良い紹介については、特にツリービューの場合はthis articleを参照してください。

現在、codeprojectに問題があるようです。あなたが扱うどのイベントに応じて、google cache

1

で記事にアクセスすることができます(MouseButtonDownを?)e.OriginalSourceは非常に可能性の高いイベント(おそらくTextBlockを)上げTreeViewItem内のコントロールが含まれています。囲みコンテナ(TreeViewItem)を見つけるには、VisualTreeHelperを使用してVisualTreeを少し歩かなければならないかもしれません。

0

VisualTreeHelperを使用して親を取得してください。

+0

私はばかにする必要があります。私は次のことを試みている:DependencyObject parent = VisualTreeHelper.GetParent(Name1); Name1は "Partner"または "channel"のタイプになります。しかし、 "GetParent"メソッドは、依存オブジェクトをパラメータとして必要とします。これを解決するには? – Schlurb

+0

私は試してみると、treeviewitem – Manish

+0

を渡すことができます:DependencyObject parent = VisualTreeHelper.GetParent(_myTreeView.SelectedItem); ...それは動作しません。次のメッセージが表示されます。_ 'System.Windows.Media.VisualTreeHelper.GetParent(System.Windows.DependencyObject) - メソッドに無効な引数があります。 – Schlurb

関連する問題