使用MVVMLight的ListView ItemTapEvent

时间:2018-11-12 09:07:16

标签: listview xamarin xamarin.forms mvvm-light

我正在尝试使用Xamarin FormsMVVMLight来构建应用程序。我已经使用菜单项创建了主详细信息页面。 当用户点击菜单项时,我要浏览页面。现在的问题是使用ItemTappedListView创建MVVMLight事件 我试图通过网络查找,但无法获得真正有效的正确答案。

到目前为止,我尝试使用EventToCommand实现MVVMLight,但是xaml通过说

引发错误。
  

在交互类型中找不到附加属性“行为”

<ListView 
            ItemsSource="{Binding MenuItemsList}"            
            CachingStrategy="RecycleElement"           
            Margin="0,0,0,10"
            RowHeight="110"
            SeparatorVisibility="Default"
            x:Name="MenuList"

            >
            <i:Interaction.Behaviors>
                <i:BehaviorCollection>
                    <cmd:EventToCommand EventName="ItemSelected" Command="{Binding OnTapCommand}"                                   
                </i:BehaviorCollection>
            </i:Interaction.Behaviors>
              <DataTemplate>
                    <ViewCell>
                    </ViewCell>
              </DataTemplate>
</ListView>
我在使用

命名空间

  

xmlns:i =“ clr-namespace:System.Windows.Interactivity; assembly = System.Windows.Interactivity”   xmlns:cmd =“ clr-namespace:GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.Extras”

当我不使用MVVMLight时,我曾经使用自定义行为,例如behaviors:ItemTappedCommandBehavior.ItemTappedCommand="{Binding OnContactSelectCommand}"

但是我真的不知道如何使用MVVMLight做同样的事情。我正在尝试在 Android和iOS平台

上运行移动应用

1 个答案:

答案 0 :(得分:0)

在菜单的ListView中显示项目时,您可以利用ListView的内置功能来了解用户的“选择”。

换句话说,只需将ListView的SelectedItem属性绑定到VM中的属性。 在该属性设置器中,您可以对逻辑进行编码以触发正确的页面导航。

因此XAML应该如下所示:

<ListView ItemsSource="{Binding MenuItemsList}"
          CachingStrategy="RecycleElement"
          Margin="0,0,0,10"
          RowHeight="110"
          SeparatorVisibility="Default"
          x:Name="MenuList"
          SelectedItem="{Binding SelectedMenuItem}">
    <DataTemplate>
        <ViewCell>
        </ViewCell>
    </DataTemplate>
</ListView>