listview - ListView ItemTapEvent 使用 MVVMLight
问题描述
我正在尝试使用Xamarin Forms
and构建应用程序MVVMLight
。我已经使用菜单项创建了主详细信息页面。当用户点击菜单项时,我想浏览页面。现在的问题是创建ItemTapped
事件以ListView
使用MVVMLight
我试图通过网络查找但无法获得真正有效的正确答案。
到目前为止,我试图实现EventToCommand
usingMVVMLight
但 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 平台上运行移动应用程序
解决方案
在 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>
推荐阅读
- python - AttributeError:“dict”对象没有属性“is_active”(PyMongo 和 Flask)
- web - 每个浏览器的 XMLHttpRequest 实现是否不同?
- python - 将字符串内的字符串数组转换为python列表
- c++ - 臃肿的目标文件会带来什么成本?
- javascript - 在不可见 asp.net 时阻止加载 iframe
- c# - Xamarin.iOS 上的声学回声消除 (AEC)
- javascript - 滚动后,粘性页脚不会停留在底部
- python - 使用列组合查找行中的数据不匹配 pandas
- android - android studio:更改 runOnUiThread 中按钮的特性阻止这些按钮
- c# - UnauthorizedAccessException - 尝试将 JSON 序列化为文件