2017-07-24 92 views
0

Xamarin.Forms和棱鏡6.3.0如何獲得ItemTappedEventArgs與EventToCommandBehavior在棱鏡的Xamarin窗體

看來,我無法使用得到ItemTappedEventArgs(或發送對象,它是ListView控件) EventToCommandBehavior。

在我的XAML,我有2個命名空間在我的XAML定義

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

也是,在我的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); 

,然後我實施我也已經在代碼「MyApp的/轉換器」是在文檔中所提出的ItemTappedEventArgsConverter其它地方定義的命令

void ItemTapped(object args) 
{ 
... 
} 

應用程序(Android)在啓動前顯示通常的「應用程序停止工作」消息。

我能在XAML使用CommandParameter="MyParameter",而不是EventArgsConverter的,也是我能夠通過使用EventArgsParameterPath="Item"

但是我用的是EventArgsConverter的那一刻得到從項目信息,我得到的錯誤,該應用程序無法啓動。

我在做什麼錯了?如何獲取事件行爲中的參數(或發送者)?有一個我可以使用的例子嗎?

回答

3

我想出了什麼問題。其實有兩個問題。

第一個是包含轉換器的程序集的參考。取而代之的

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

應該

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

(或者不管是包含轉換組件的名稱)

第二個錯誤是,我沒有」 t在我的內容頁中有以下XAML

<ContentPage.Resources> 
    <ResourceDictionary> 
     <local:ItemTappedEventArgsConverter x:Key="ItemTappedEventArgsConverter" /> 
    </ResourceDictionary> 
</ContentPage.Resources>