Xamarin 在ListView.ItemSource中点击时触发命令
在Xamarin项目中,我在一个名为Xamarin 在ListView.ItemSource中点击时触发命令,xamarin,xamarin.forms,Xamarin,Xamarin.forms,在Xamarin项目中,我在一个名为menu.xaml的视图中有一个列表视图: <ListView x:Name="listView" x:FieldModifier="public"> <ListView.ItemsSource> <x:Array Type="{x:Type local1:MasterPageItem}"> <local1:
menu.xaml的视图中有一个列表视图:
<ListView x:Name="listView" x:FieldModifier="public">
<ListView.ItemsSource>
<x:Array Type="{x:Type local1:MasterPageItem}">
<local1:MasterPageItem Title="foo" TargetType="{x:Type local:FooPage}" />
<local1:MasterPageItem Title="bar" TargetType="{x:Type local:BarPage}" />
<local1:MasterPageItem Title="logout" TargetType="{x:Type local:LogoutPage}" />
</x:Array>
</ListView.ItemsSource>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="5,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding IconSource}" />
<Label Grid.Column="1" Text="{Binding Title}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
点击其中一个项目将打开相应的页面。我希望注销链接触发命令,而不是打开页面。如何完成此操作?您可以将点击手势识别器添加到网格中:
public partial class MainPage : MasterDetailPage
{
public MainPage ()
{
masterPage.listView.ItemSelected += OnItemSelected;
}
void OnItemSelected (object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as MasterPageItem;
if (item != null) {
// Check here if is the logout link that is clicked and perform the required a action
}
}
}
<Grid Padding="5,10">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding LoginActivity}" CommandParameter="{Binding .}">
</TapGestureRecognizer>
</Grid.GestureRecognizers>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding IconSource}" />
<Label Grid.Column="1" Text="{Binding Title}" />
</Grid>
要执行菜单项的特定操作,您可以向MasterPageItem模型添加唯一属性,并为每个菜单项设置属性。在viewmodel中定义一个objet命令(执行注销任务),并将其绑定到注销链接的单击。谢谢@MarcelCallo,这就是我要问的:我该怎么做?我知道如何在视图后面的代码中设置命令,但我不知道如何连接命令和点击操作代码>
<Grid Padding="5,10">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding LoginActivity}" CommandParameter="{Binding .}">
</TapGestureRecognizer>
</Grid.GestureRecognizers>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding IconSource}" />
<Label Grid.Column="1" Text="{Binding Title}" />
</Grid>