항목의 세로 ListView가있는보기가있는 WinRT/C#/XAML 앱이 있습니다. 항목의 양에 따라 ListView는 세로 스크롤 막대를 표시합니다. 다음은 XAML 정의입니다 :ListView를 선택된 항목으로 스크롤하십시오.
<UserControl.Resources>
<CollectionViewSource
x:Name="myViewSource"
Source="{Binding myViewModel.Items}" />
</UserControl.Resources>
...
<ListView
x:Name="myListView"
ItemsSource="{Binding Source={StaticResource myViewSource}}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
</ListView>
지금 때마다 나는이보기로 이동, ListView에의 선택된 항목 뒤에 코드 (OnNavigatedTo
)에서보기 모델의 데이터 바인딩의 selectedItem 속성을 설정하여 선택됩니다. 내 문제 : ListView이 선택한 항목을 자동으로 스크롤하지 않습니다. 스크롤 막대는 ListView의 맨 위에 있고 사용자는 선택한 항목을 보려면 수동으로 스크롤해야합니다.
코드 뒤에서 (OnNavigatedTo
) SelectedItem을 설정 한 후에 myListView.ScrollIntoView(MyViewModel.SelectedItem);
을 실행하려고했지만 작동하지 않습니다. 스크롤바는 맨 위에 남아 있습니다.
이 스레드는 SO : Scroll WinRT ListView to particular group에 대해 알고 있습니다. 이것은 비슷한 문제인 것 같습니다. 그러나 ListView의 시각적 트리를 수동으로 또는 WinRT XAML Toolkit으로 이동할 때 ScrollViewer를 찾지 못합니다 (대신 null이 반환됩니다).
당신이 기다리고 있습니까? –
OnNavigatedTo()에서 ScrollIntoView()를 호출하고 있습니다. 나는 이것이 올바른 장소라고 생각하고 ListView가로드되어 있어야합니다. 아니면 내가 틀릴 수도 있니? – Matthias
컨트롤이로드되기 전에 OnNavigatedTo가 발생한다고 생각합니다. –