Я пытаюсь связать событие с ListView на моей странице меню, используя свойство itemtapped. В настоящее время я использую среду MVVM (Xamarin form labs) в своем приложении. То, что я пытаюсь выполнить, - это когда пользователь набирает пункт меню, приложение переходит к правильному виду.
Вот код xaml:
<ListView x:Name="list"
ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedItem}"
ItemTapped= SET-BINDING-HERE >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
//setup template here
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Я хочу привязать событие itemtapped к этой функции:
public void NavigateTo(object sender, ItemTappedEventArgs args)
{
var test = args.Item as MenuModel;
cPageTypes.GetByKey(test.CommandParameter)
.SwitchRootPage(AIMCore.ViewModels.ElliottBaseViewModel.MasterPage);
list.SelectedItem = null;
AIMCore.ViewModels.BaseViewModel.MasterPage.IsPresented = false;
}
В настоящее время я могу заставить это работать, если добавить функцию в код представления позади, а затем установить ItemTapped = 'NavigatTo', но это кажется неправильным, поскольку оно побеждает концепцию MVVM. То, что я действительно хочу сделать, это привязать событие к этой же функциональности в моей ViewModel примерно так:
<ListView x:Name="list"
ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedItem}"
ItemTapped= "{Binding NavigateTo}" > // this binding is to the ViewModel
Однако это не работает, или я не делаю это правильно. Когда я пытаюсь реализовать его таким образом, код генерирует и создает ошибку.
Ошибка: Xamarin.Forms.Xaml.XamlParseException: Нет Свойство name ItemTapped найдено на Xamarin.Forms.Xaml.BaseValueNode.SetPropertyValue