【发布时间】:2019-10-02 03:16:55
【问题描述】:
Xamarin Forms 4.0 最近发布了一个 CollectionView,让我们可以滚动到 collectionView 中的特定项目。
我有一个包含 10 个项目的集合视图,它没有填满屏幕。 (Microsoft Sample Picture)。我正在使用 ReactiveUI 和 MVVM Prism 来处理我在 ViewModel 中的所有逻辑。
到目前为止,我能够使用SelectedItem 和SelectionChangedCommand 处理基于点击的导航。我想要处理的下一个功能是滚动到我选择的项目。我搜索了论坛,但没有运气。该示例仅向您展示如何在不通过 MVVM Prism / ReactiveUI 的代码中执行此操作。提前致谢!
<CollectionView x:Name="ScrollButtons"
ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedMenuItem}"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
HeightRequest="90"
SelectionMode="Single"
SelectionChangedCommand="{Binding MenuItemSelectedCommand}"
BackgroundColor="{DynamicResource BackgroundColorShell}">
【问题讨论】:
-
抱歉,您想手动滚动到 SelectedItem 还是在 CollectionView 滚动到 SelectedItem 时处理?
-
@PhatHuynh 手动滚动到选定的项目。我的屏幕底部有一个包含 10 个菜单项的菜单栏,我单击第 7 或第 8 项,它导航到该页面,我希望能够滚动到使用 Prism / Reactive 命令单击的那个项目。
-
您需要在 ViewModel 上获取 CollectionView 然后使用 ScrollTo 方法。
-
@PhatHuynh 如何将 CollectionView 连接到 ViewModel?我只是绑定属性。我一直想知道这可能是最好的方法。我知道您可以在 Xamarin 表单中使用 x:Name=myCollectionView 并且可以在后面的代码中引用它。如何在视图模型中引用 collectionView。
-
您可以通过处理 View 上的 BindingContextChanged 将其传递给 ViewModel。
标签: c# xamarin.forms prism reactiveui xamarin-forms-4