2012-04-01 13 views
1

私は複数のアイテムを持つListBoxを持っており、Scrollviewerを基準にアイテムのオフセットを取得したいと考えています。 012PointsまたはTransformToAncestorメソッドを使用してそれを実行しようとしましたが、既に表示されているアイテムに対してのみ機能しました。では、リストの最後に表示されていない項目のオフセットをどのように得ることができますか?WPFのScrollviewerを基準にアイテムのオフセットを取得する方法は?

答えて

0

デフォルトのItemsPanel(VirtualizingStackPanel)を使用しているので、これは可能ではないと思います。目に見えないアイテムはビジュアルツリーには付いていません。測定されずに決して配置されないので、位置はありません。

仮想化が必須でない場合は、ItemsPanelをStackPanelに変更する必要があります。このパネルでは、すべてのアイテムをビジュアルツリーに添付して、TranslatePoint/TransfromToAncestorが正しく動作します。

<ListBox> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    ... 
</ListBox> 
関連する問題