2012-03-29 12 views
3

私はWindowsPhone ToolkitのExpanderViewを使用しています。最初に読み込んだExpanderは常に2番目の画像のように見えます。 それは常にそのすべてのアイテムの同じ高さで、そのように思えます。ExpanderViewはすべての項目を表示していません

もし私が別のページに行って戻ってきたら、Expander(図1)の行を止めることを除いて、すべてがうまくなり、レイアウトは静かに見えます。

this.UpdatedLayout();(現在のページ)またはExpanderView.UpdateLayout();何かを解決しました。 表示されないアイテムは、そのリストに完全にロードされています。

part 1

part 2

<ItemsControl ItemsSource="{Binding EpisodeList}" Margin="20,0,0,0" Grid.Row="1" Grid.ColumnSpan="2"> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <StackPanel> 
      <toolkit:ExpanderView ItemsSource="{Binding Value}" > 
       <toolkit:ExpanderView.Header> 
        <TextBlock Margin="0,0,10,0"> 
      <Run Text="Season "/> 
      <Run Text="{Binding Key}" /> 
        </TextBlock> 
       </toolkit:ExpanderView.Header> 
       <toolkit:ExpanderView.ItemTemplate> 
        <DataTemplate> 
         <Border BorderBrush="White" BorderThickness="1" Margin="5"> 
          <Grid MouseLeftButtonUp="Grid_MouseLeftButtonUp"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto"/> 
            <ColumnDefinition /> 
           </Grid.ColumnDefinitions> 
           <Image Height="40" Source="{Binding ScreenCap}" Margin="5,0,0,0"/> 
           <TextBlock x:Name="t" Margin="10" Text="{Binding Title}" TextWrapping="Wrap" Grid.Column="1" /> 
          </Grid> 
         </Border> 
        </DataTemplate> 
       </toolkit:ExpanderView.ItemTemplate> 

      </toolkit:ExpanderView> 
     </StackPanel> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
</ItemsControl> 

EpisodeListは間違ってここに行くいただきました!誰がどんな計画を持っている場合、私は本当にだろう

をINotifyPropertyChangedの辞書(int型、のObservableCollection(MyClassの))と実装のタイプですあなたの助けに感謝、私はちょうどGoogleのリストに同様のバグのバグレポートを発見していない。

(デバイス上だけでなく、エミュレータ上でデバッグさ)

+0

ワンタイム。これは、コンテンツ '高さ'の2048ピクセルを示します。たぶんそれは似たようなものです... – Ku6opr

+0

あなたはそれを解決できますか? – user1021605

答えて

6

私はitemcontainerとしてリストボックスを使用して、そしてそれにパンダのアイテムを結合することによってこの問題を解決するために管理:私はExpanderView` `と同様の問題を持っている

    <Controls:ExpanderView Expanded="ExpanderView_Expanded" 
         Header="{Binding}"        
         HeaderTemplate="{StaticResource HeaderTemplate}"                    
         NonExpandableHeader="{Binding}" 
         ExpanderTemplate="{StaticResource ExpanderTemplate}" 
         NonExpandableHeaderTemplate="{StaticResource NonExpandableHeaderTemplate}" 
         Expander="{Binding}" 
         > 
         <ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Items}" /> 
        </Controls:ExpanderView> 
+1

これは答えとしてマークする必要があります、それは魅力のように働いた! – Ateik

0

私はExpanderViewと同様の問題がありました。私はそれがビューのバグかもしれないと思う、何とか2048pxの制限に関連しています。基本的にExpanderViewに多くのアイテムを追加したときに、ビューを折りたたんで再度展開するまでは、すべてが問題ありませんでした。 ExpanderViewを展開した後、2048ピクセル後のアイテムは、タップしたりスクロールしたり、移動していない限り表示されない限り表示されませんでした(アイテムのタップアニメーションが実行中だった、またはリストが移動して)。

ExpanderViewにアイテムを追加したり、アイテムを展開しているときにそのアイテムを削除したりすると、次回にアイテムが折りたたまれて展開されるまで、グリッチが消えてしまいました。 ExpanderViewのExpandedおよびLayoutUpdatedイベントを使用して拡張されたときに、ビューにダミーアイテムを削除します。基本的にこれは私がやったことです:

  • 状態を設定して、展開が進行中であることを示し、後で使用するために拡大表示します。 (に拡張イベントハンドラ)
  • はすべてExpanderviews'レイアウトが更新されるそれまでは待って
  • (LayoutUpdatedイベントハンドラで)拡大したExpanderViewにダミーの項目を追加します(これを追跡するためにLayoutUpdatedイベントハンドラを使用します)それまでは、すべてのExpanderviews'レイアウトは
  • 更新されます待ちます(LayoutUpdatedイベントハンドラで)ダミーの項目を削除し

醜いソリューションおそらく私が思い付くことが最高。あなたの問題に役立つことを願っています。

編集: 拡張子の行を止めるのに役立たない。ちょうどそれを働かせることができませんでした..

+0

たぶんコーヒーが必要なのかもしれませんが、私のExpanderViewはアイテムのゲッターを手に入れました。その結果、アイテムを直接追加または削除することはできません。 ItemsSourceデータを保存して復元しようとしていますが、それでも何も変わりません。 ExpandedEventに参加し、送信者を保存してLayoutUpdatedイベントを追加しています。 LayoutUpdatedでは、一時的にItemsSourceを保存し、送信者をnullに設定します。レイアウトの後にもう一度更新され、ItemSourceを復元してLayoutUpdatedイベントを削除します。 – user1021605

+0

少し明確にするために、実際にExpanderViewにアイテムを直接追加するのではなく、アイテムソースに設定されている観測可能リストに直接追加しますExpanderView。 – user1305758

+0

Worked!この回避策をありがとう:) – user1021605