2016-07-19 14 views
0

リストビューで最初に表示されるグループをスクロールするたびに、このサンプルアプリケーションがあります。この問題は、スクロールしてリストビューの最初の項目を表示するときに発生します。表示される上部のグループを更新しますが、リストのスクロールが完了した時点でのみ更新されます。だから私がスクロール(スクロールして画面から指を離し、与えられた慣性でスクロールさせる)した場合、時には、目に見えるグループの値を更新している間に遅れることがあるとします。私のサンプルアプリケーションへのリンクは次のとおりです。https://1drv.ms/u/s!AhChIerZubKRh3C4DhCZ3K7jpm6uListViewの最初の表示グループUWP

編集:問題を表示するためにビデオをアップロードしました。 https://1drv.ms/v/s!AhChIerZubKRh3pmL6IsQNi0Mrm1

+0

win10のPCとWindows phoneでサンプルを実行しましたが、問題の再現に失敗しました。このサンプルが問題を再現できる正しいサンプルであれば、再度確認してください。 –

+0

はい、私はまだ問題に直面している正しいサンプルコードです。私はここに私が直面している問題を示すビデオをアップロードしました:https://1drv.ms/v/s!AhChIerZubKRh3pmL6IsQNi0Mrm1 – tavier

答えて

1

問題がスクロール中で、TextBlockという名前の「tbHeader」の位置はListViewでその真の位置であるが、それはより多くのようなものだ:スクロールが完全に停止するとここでは、トップのテキストブロックのみが更新されますことがわかりますヘッダを表示するための偽のものがあります(私は表示位置にヘッダTextBlockと言うでしょう)。スクロールが停止すると、ヘッダのようになります。TextBlockは読み込み位置からヘッダの表示位置に挿入されます。だからここ

は私のソリューションは、我々はこれ以上、私たちはようやくその「DateTimePropertyOfClassA」(ヘッダ)を示し、このListViewのすべてのListViewItemPresenterを見つけて、最初の上映アイテムを見つけることができる「tbHeader」という名前のすべてのTextBlock Sを見つけることができませんでプロパティ。

sv.ViewChanged += (ss, ee) => 
{ 
    //IEnumerable<TextBlock> tblocks = FindVisualChildren<TextBlock>(lv).Where(x => x.Name == "tbHeader"); 
    //if (tblocks != null) 
    //{ 
    // foreach (TextBlock tblock in tblocks) 
    // { 
    //  if (IsVisibileToUser(tblock, sv)) 
    //  { 
    //   first.Text = tblock.Text; 
    //   break; 
    //  } 
    // } 
    //} 
    IEnumerable<ListViewItemPresenter> presenters = FindVisualChildren<ListViewItemPresenter>(lv); 
    if (presenters != null) 
    { 
     foreach (ListViewItemPresenter presenter in presenters) 
     { 
      if (IsVisibileToUser(presenter, sv)) 
      { 
       var content = presenter.Content as ClassA; 
       first.Text = content.DateTimePropertyOfClassA.ToString(); 
       break; 
      } 
     } 
    } 
}; 

他のコードは、我々が議論した最後のケースとして残っています。

+0

完璧な、ありがとう再びグレース:) – tavier

関連する問題