如何在Prism中为Xamarin Forms获取带有EventToCommandBehavior的ItemTappedEventArgs

时间:2017-07-24 06:38:01

标签: xamarin.forms prism

Xamarin.Forms and Prism 6.3.0

似乎我无法使用EventToCommandBehavior获取ItemTappedEventArgs(或发送者对象,即ListView)。

在我的XAML中,我定义了2个命名空间

xmlns:b="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
xmlns:c="clr-namespace:Prism.Converters;assembly=Prism.Forms"

也在我的XAML中,在我的ListView中我有以下

<ListView.Behaviors>
    <b:EventToCommandBehavior EventName="ItemTapped" Command="{Binding ItemTappedCommand}" 
         EventArgsConverter="{StaticResource ItemTappedEventArgsConverter}"/>
</ListView.Behaviors>

在我的ViewModel中,我声明了我的DelegateCommand

public DelegateCommand<object> ItemTappedCommand { get; set; }

我在ViewModel的构造函数中分配命令

ItemTappedCommand = new DelegateCommand<object>(ItemTapped);

然后我实现命令

void ItemTapped(object args)
{
...
}

我还在代码的其他地方定义了&#34; MyApp / Converters&#34;文档中提出的ItemTappedEventArgsConverter

应用程序(Android)显示通常&#34;应用程序停止工作&#34;消息,甚至开始之前。

我能够在XAML中使用CommandParameter="MyParameter"代替EventArgsConverter,并且我还可以使用EventArgsParameterPath="Item"

从项目中获取信息

但是当我使用EventArgsConverter时,我收到了错误,应用程序无法启动。

我做错了什么?如何在事件行为中获取args(或发件人)?有一个我可以使用的例子吗?

1 个答案:

答案 0 :(得分:3)

我弄清楚问题是什么。实际上有2个问题。

第一个是包含转换器的组件的引用。 而不是

xmlns:c="clr-namespace:Prism.Converters;assembly=Prism.Forms"

应该是

xmlns:local="clr-namespace:MyApplication.Converters"

(或包含转换器的程序集的名称)

第二个错误是我的内容页面中没有以下XAML

<ContentPage.Resources>
    <ResourceDictionary>
        <local:ItemTappedEventArgsConverter x:Key="ItemTappedEventArgsConverter" />
    </ResourceDictionary>
</ContentPage.Resources>
相关问题