xamarin - 在 ListView.ItemSource 中点击触发命令
问题描述
在 Xamarin 项目中,我在一个名为的视图中有这个 ListView 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>
这些产生了这个列表:
在我的视图模型中,我有这个命令:
class MasterViewModel : BaseViewModel
{
public ICommand LogoutActivity { get; private set; }
public MasterViewModel()
{
LogoutActivity = new Command(async () => await LogoutAsync());
}
}
点击其中一项会打开相应的页面。我希望注销链接触发命令而不是打开页面。我该如何做到这一点?
解决方案
您可以将轻按手势识别器添加到网格中:
<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 模型并为它们中的每一个进行设置。
推荐阅读
- batch-file - 字母范围的批处理文件递归,避免奇怪的短名称选择
- python - 如何配置 django 在 apache 上运行
- java - Kotlin - 调用getter时未加载HibernateProxy
- amazon-web-services - 如何使用无服务器部署没有身份源的 API Gateway 自定义授权方?
- tensorflow - 为什么 Tensorboard1.15 会为每个 global_step 创建一个单独的图?
- r - 使用 scale_color_manual 从一组特定变量中手动选择绘图线大小
- mysql - SQL:如果 *condition* 在另一行上,则更新一行
- c# - 将 BoxAnnotationViewModel 上的注释 X1 和 X2 设置在 CategoryDateTimeAxis 上的主要网格单元之间
- tkinter - Tkinter 列表框填充了从浏览按钮导入的未知文件的文件名?
- javascript - 如何检测点击`` Visual Studio 2019 上的 WebView 控件中包含的元素?