2009-05-25 7 views
0

答えを出す前に、あなたがタイトルを読んだときに考えたことは簡単な質問ではありません。WPF:要素の位置を見つける

私はTのObservableCollectionにバインドされ、DataTemplateとして記述されたデータを持つItemsControlを持っています。これまでのところ、これは古典的なケースです。

新しい要素を追加するとき、レンダリングされる要素のウィンドウ内の正確な座標と位置を知る必要があります。

私は、イベントを発生させるためにコレクションに必要な時間があることを認識しています。実際に要素を配置するために、すべてのレイアウトメカニズムを使用するWPFがあります。

完了したら通知を受け、その場所を取得したいと考えています。私は、コード

UIElement item = list.ItemContainerGenerator.ContainerFromItem(foo) as UIElement; 
Point point = TranslatePoint(new Point(0.0, 0.0), Window.GetWindow(item)); 

のこれらの行を使用しています 問題は、私はそれらの行を打ったとき、私は右の場所を得るか、第二のために、「待って」とWPFの仕上げをさせた場合、それは、常に時期尚早である今です。

私はUIスレッドの「待機」よりも優れた解決策を見つけようとしています。 多分あなたが手助けすることができます:)

ありがとう! アリエル

+0

ChrisF、編集に感謝します。 コードセクションのスクロールをどのように削除しましたか? – ArielBH

答えて

0

UIElement's eventsのいずれかが、レイアウトデータがいつ利用可能かを教えてくれます。 LayoutUpdateは有望です。

+0

さて、私はそれを前に試しました。あなたの答えの後、私は自分のコードを再確認しました。私はもう少しシンクロナイゼーションをする必要がありましたが、助けになりました。おかげさまで – ArielBH

関連する問題