Xamarin.forms 如何为Xamarin.form ListView实现MVVM

Xamarin.forms 如何为Xamarin.form ListView实现MVVM,xamarin.forms,Xamarin.forms,我正在开发一个应用程序,它有一个名为itemspace的主页,其中包含一个ListView和另一个名为DetailPage的页面,我试图将onimselected函数从itemspace类移动到itemspacgemodel。我试图实现的功能是,一旦单击该项目,另一个DetailPage将弹出一个包含所单击项目详细信息的页面。我该怎么办?谢谢 ItemsPage: public partial class ItemsPage : ContentPage { ItemsViewM

我正在开发一个应用程序,它有一个名为
itemspace
的主页,其中包含一个
ListView
和另一个名为
DetailPage
的页面,我试图将
onimselected
函数从
itemspace
类移动到
itemspacgemodel
。我试图实现的功能是,一旦单击该项目,另一个
DetailPage
将弹出一个包含所单击项目详细信息的页面。我该怎么办?谢谢

ItemsPage:  public partial class ItemsPage : ContentPage {
        ItemsViewModel viewModel;

        public ItemsPage() {
            InitializeComponent();
            BindingContext = viewModel = new ItemsViewModel();
        }

        async void OnItemSelected(object sender, SelectedItemChangedEventArgs args) {
            var item = args.SelectedItem as Item;
            if (item == null)
                return;
            var viewModel = BindingContext as ItemsViewModel;
            viewModel.SelectedItem = item;
            await Navigation.PushAsync(new ItemDetailPage(new ItemDetailViewModel(item)));
            // Manually deselect item.
            ItemsListView.SelectedItem = null;
        }
}


您可以使用行为将选择事件与视图模型中的命令绑定。您可以研究如何实现可重用事件命令。导航到DetailPage时,可以将数据传递到此页。你已经这么做了,那么有什么特别的问题吗?
 <ListView x:Name="ItemsListView" 
                ItemsSource="{Binding Items}"
                VerticalOptions="FillAndExpand"
                 HasUnevenRows="true"
                 RefreshCommand="{Binding LoadItemsCommand}"
                 IsPullToRefreshEnabled="true"
                 IsRefreshing="{Binding IsBusy, Mode=OneWay}"
                 CachingStrategy="RecycleElement"
                 ItemSelected ="OnItemSelected"
                  >