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"
>