我有一個WinRT/C#/ XAML應用程序,其視圖具有垂直ListView項目。根據項目的數量,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。 這似乎是一個類似的問題。但是當我手動或使用WinRT XAML工具包走過ListView的可視化樹時,它找不到ScrollViewer(而是返回null)。
你是在等你嘗試滾動前ListView控件加載(被添加到可視化樹)? –
我在OnNavigatedTo()中調用ScrollIntoView()。我認爲這將是正確的地方,ListView應該已經加載。或者我可能錯了? – Matthias
我認爲OnNavigatedTo發生在控件加載之前... –