(Windows Phone 8.1) 내 앱에는 목록 상자가있는 MainPage가 있습니다. NavigationCacheMode는 동일한 페이지로 다시 이동할 때 상태를 유지해야하는 것으로 설정됩니다.마지막 위치에서 스크롤을 다시 시작하면 목록 상자가 위로 이동합니다.
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
// cache page
this.NavigationCacheMode = NavigationCacheMode.Required;
}
그래서 다른 페이지로 이동하여 내 메인 페이지로 돌아올 때 모든 항목이 그대로 남아 있습니다. Listbox는 또한 corrent 위치에 있습니다. 하지만 터치 할 때마다 화면 위쪽으로 이동하여 스크롤합니다.
위로 가기 전에 스크롤을 다시 시작하려면 어떻게해야합니까?
편집 : 목록 상자와 같은
이 보인다
를 해결하는 대신, WP8.1에 사용 목록보기 도청입니다!
이 버그도 발생합니다. 가상화 된 패널을 사용하는 방법은 없지만 수동으로 스크롤 위치를 복원 하시겠습니까? –
예, 가능하지만 불행히도 약간의 노력이 필요합니다. 먼저 VisualTree를 검색하여 목록 렌더링 후에 만 작동하는 ScrollViewer (http://msdn.microsoft.com/en-us/library/bb613579(v=vs.110).aspx 끝)를 찾아야합니다. . ScrollViewer를 사용하면 가로/세로 오프셋을 추출하고 저장할 수 있습니다. 해당 페이지로 돌아 가면 ScrollViewer를 얻은 다음 VisualTree를 다시 스캔해야하며 목록 내용이 렌더링되면 저장된 위치 (ScrollViewer.ChangeView)로 스크롤 할 수 있습니다. 지금까지 렌더링을 기다리는 좋은 방법을 찾지 못했습니다 :/ – eberthold
이 솔루션은 NavigationCacheMode가 Disabled로 설정되어있는 한 오래 작동합니다. 물론 이제는 사용할 수 없게되므로 유지하려는 UI 속성을 수동으로 추적해야합니다. ListView가로드시 이동하지 않기 때문에 캐시를 사용하여이 기술을 사용하는 방법을 찾지 못했지만 다시 스크롤하여 스크롤 할 수 있습니다. –