問題がスクロール中で、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;
}
}
}
};
他のコードは、我々が議論した最後のケースとして残っています。
win10のPCとWindows phoneでサンプルを実行しましたが、問題の再現に失敗しました。このサンプルが問題を再現できる正しいサンプルであれば、再度確認してください。 –
はい、私はまだ問題に直面している正しいサンプルコードです。私はここに私が直面している問題を示すビデオをアップロードしました:https://1drv.ms/v/s!AhChIerZubKRh3pmL6IsQNi0Mrm1 – tavier