2012-05-01 22 views
3

I持って次のように、以下の項目テンプレートを持つリストボックスを持っているページ:ページのOnNavigatedToイベントに WP7リストボックス項目のスクロール

<ListBox x:Name="test"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
       <Grid MaxHeight="108" Margin="0,0,0,10"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="4" /> 
         <ColumnDefinition Width="auto" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
        <Rectangle Height="108" Grid.Column="0" Fill="{Binding Color}"/> 
        <Image Source="{Binding Image}" Height="108" Width="108" Grid.Column="1" HorizontalAlignment="Left" Stretch="UniformToFill"/> 
        <StackPanel Grid.Column="2"> 
         <TextBlock Text="{Binding Title}" TextWrapping="NoWrap" /> 
         <TextBlock Text="{Binding SubHeading}" TextWrapping="NoWrap" /> 
         <TextBlock Text="{Binding Body}" TextWrapping="Wrap" /> 
        </StackPanel> 
       </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

は、私は、リストの項目のソースを設定します約20項目の観察可能なコレクションに貼り付けます。

リストはすべてうまく表示されますが、リストを上下にスクロールすると、項目がUI上で同期していないように見えます。たとえば、最初のリストアイテムに表示されていたテキストがリストボックスの最後のアイテムに表示され、重複がある場合があります。スワイプするたびにアイテムが異なります。

リストボックスアイテムをデバッグしました。正しいオブジェクトが正しいアイテムにバインドされていることがわかりました。したがって、UIに表示されるものだけが間違っています。

私は、仮想化スタックパネルではなく標準のスタックパネルを明示的に使用してみました。これは、すべてのアイテムがメモリにロードされていることを確認することで回避できます。

私は仮想化の削除が答えだとは思いません。根本的な原因がなければなりません。しかし、私のリストボックスは実際に30以上の項目を含むことは決して受け入れられないかもしれません。

別のページで、私はsilverlightツールキットlonglistselectorで同じことを行い、同じ問題があります。ただし、longlistselectorで仮想化を削除する方法についてはわかりません。

要約すると、スクロールするときにリストボックスアイテムがUIを正しく更新しないという根底にある問題は何ですか?仮想化を削除することが唯一の答えである場合、longlistselectorでこれをどのように行うことができますか?

ありがとうございます。

+1

これはエミュレータまたは実際のWP7デバイスでですか?私はエミュレータ上で多くの視覚的な不具合を見てきました。 –

+0

こんにちは、その両方で。 – FlashAsh99

+0

言及すべきもう一つのことは、グリッド内の最大高さを<= 80px(またはそれ以下)に変更するとうまくいきます。リストボックスは、20個の項目のリストがある80pxより大きいテンプレート項目を処理できないようです。または私は間違っていますか? – FlashAsh99

答えて

1

結局のところ、それはバインディングの問題であり、リストボックスにはまったく関係ありませんでした。

アイテムテンプレート内のいくつかのプロパティのバインディングを(別のコードビットで)バインドした後で削除していたため、リストボックスが新しいアイテムのコンテナをリサイクルするたびに更新できませんでしたそれは正しい情報とそれ。

ありがとうございました

2

多分何らかの種類ですかthis問題? (スクロール中のListBoxの跳ね上がり)

+1

変動するリストの問題は、さまざまなサイズのアイテムを仮想化しているためです。異なる項目がリストの内外に移動すると、リストボックスは異なるサイズに調整する必要があります。アイテムサイズの測定と設定に基づいた他の回避策もありますが、私はあなたのソリューションについてももっと調査したいと思っています。 –

+1

これは非常に奇妙な問題です、そして、ブログの解決策は、記述された問題(ビデオ)のために本当に動作します...したがって、私はListBox実装のバグだと思います... –

関連する問題