在ListView.ItemSource中点按发射命令。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ListView.ItemSource中点按发射命令。相关的知识,希望对你有一定的参考价值。
在一个Xamarin项目中,我在一个叫作 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());
}
}
点击其中一个项目就会打开一个相应的页面。我想让注销链接触发一个命令,而不是打开一个页面。我如何实现这个目标?
答案
你可以在你的网格中添加Tapped手势识别器。
<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模型中添加一个独特的属性,并为每个项目设置。
另一答案
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
}
}
}
以上是关于在ListView.ItemSource中点按发射命令。的主要内容,如果未能解决你的问题,请参考以下文章
更新 Listview itemsource 在 Xamarin 表单中清除其中的单选按钮控件