如何在ViewModel中绑定ListView的ItemTapped属性以导航详细信息页面?

如何在ViewModel中绑定ListView的ItemTapped属性以导航详细信息页面?,listview,mvvm,prism,xamarin.forms,Listview,Mvvm,Prism,Xamarin.forms,我正试图找出如何绑定ListView的条目,以便使用Prism导航详细信息页面。 我尝试使用DelegateCommand,但出现错误: 异常是:XamlParseException-位置15:7。找不到名称为的属性 视图: 当我将此DelegateCommand绑定到时,导航功能正常。 可能这与Prism无关,但我找不到任何使用这个的例子。 谢谢。按钮有一个要绑定的命令属性,而ListView的ItemTapped是一个需要eventhandler的事件。如果要使用绑定,则必须使用以下行为:

我正试图找出如何绑定ListView的条目,以便使用Prism导航详细信息页面。 我尝试使用DelegateCommand,但出现错误:

异常是:XamlParseException-位置15:7。找不到名称为的属性

视图:

当我将此DelegateCommand绑定到
时,导航功能正常。 可能这与Prism无关,但我找不到任何使用这个的例子。
谢谢。

按钮有一个要绑定的命令属性,而ListView的ItemTapped是一个需要eventhandler的事件。如果要使用绑定,则必须使用以下行为:

<ListView
  ItemsSource="{Binding UsersList}"
  SelectedItem="{Binding SelectedUser}"
  RowHeight="65" >
  <ListView.Behaviors>
    <b:EventToCommand EventName="ItemTapped" Command="{Binding ShowUserDetail}" />
  </ListView.Behaviors>
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <StackLayout Padding="20" HorizontalOptions="FillAndExpand">
          <Label Text="{Binding Name}" TextColor="Blue" FontSize="15"/>
          <Label Text="{Binding Email}" TextColor="Gray" FontSize="11"/>
        </StackLayout>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

资料来源:

编辑:
是中的一种行为。

我相信Barts代码片段在某种程度上也能起作用,但我真的不知道该如何实现,也不知道该实现什么。我建议更好的解释和一些工作代码示例

我找到了有效的解决方案

在添加nuget包“xamarin forms behaviors”(在portable和所有子项目iOS、Android…)之后,我在ListView中添加了以下内容:

<ListView
    ItemsSource="{Binding UsersList}"
    SelectedItem="{Binding SelectedUser}">

    <b:Interaction.Behaviors>
        <b:BehaviorCollection>
            <b:EventToCommand EventName="ItemTapped" Command="{Binding ShowUserDetail}"/>
        </b:BehaviorCollection>
    </b:Interaction.Behaviors>
    ...
还有一件事,对于iOS平台,必须将其放在AppDelegate.cs/FinishedLaunching方法中(由于错误异常,此处对此进行了描述)


现在“ItemTapped”可以正常工作了。

感谢您的快速响应。这里有一个文档:但是,还有一个nuget软件包。我是否需要编写名为EventToCommandBehavior的自定义方法?很抱歉,我在xamarin方面相对较新。该包似乎有EventToCommand类(没有-Behavior)。更新了回复。
<ListView
  ItemsSource="{Binding UsersList}"
  SelectedItem="{Binding SelectedUser}"
  RowHeight="65" >
  <ListView.Behaviors>
    <b:EventToCommand EventName="ItemTapped" Command="{Binding ShowUserDetail}" />
  </ListView.Behaviors>
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <StackLayout Padding="20" HorizontalOptions="FillAndExpand">
          <Label Text="{Binding Name}" TextColor="Blue" FontSize="15"/>
          <Label Text="{Binding Email}" TextColor="Gray" FontSize="11"/>
        </StackLayout>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>
<ListView
    ItemsSource="{Binding UsersList}"
    SelectedItem="{Binding SelectedUser}">

    <b:Interaction.Behaviors>
        <b:BehaviorCollection>
            <b:EventToCommand EventName="ItemTapped" Command="{Binding ShowUserDetail}"/>
        </b:BehaviorCollection>
    </b:Interaction.Behaviors>
    ...
xmlns:b="clr-namespace:Xamarin.Behaviors;assembly=Xamarin.Behaviors"
Xamarin.Behaviors.Infrastructure.Init();