2017-04-13 85 views
0

我试图在corradocavalli/Corcav.Behaviors上使用Xamarin.Forms行为,但是我无法正确地将 ItemTapped事件绑定到ViewModelXamarin.Forms ListView ItemCapped Corcav.Behaviors无法正常工作?

在我的ListView我使用: -

<behaviors:EventToCommand 
    BindingContext="{behaviors:RelativeContext Name=MyPageName}" 
    EventName="ItemTapped"         
    CommandName="OnItemSelected"        
    PassEventArgument="True" 
/> 

,并在我的视图模型我使用: -

public Command<ItemTappedEventArgs> OnItemSelected { get; private set; } 

构造: -

this.OnItemSelected = 
     new Command<ItemTappedEventArgs>(async (e) => await MyHandlerForOnItemSelected(e)); 

和最后: -

private async Task MyHandlerForOnItemSelected(ItemTappedEventArgs e) 
{ 
    .... 
} 

xaml标记导致应用程序不启动,并挂起,因为我明明做错了什么。

任何想法?

+0

你有什么错误吗?他们说什么? –

+0

@GeraldVersluis它只是挂起了应用程序,并没有加载xaml页面。当我删除xaml中的行为标记时,应用程序将显示该页面。 – Johnny

+0

请检查应用程序输出窗口,可能是有什么东西 –

回答

0
<ListView ItemsSource="{Binding Items}"> 
      <behaviors:Interaction.Behaviors> 
      <behaviors:BehaviorCollection> 
       <behaviors:EventToCommand 
        BindingContext="{behaviors:RelativeContext MPage}" 
        EventName="ItemTapped" 
        CommandName="OnItemSelected" 
        PassEventArgument="True"/> 
      </behaviors:BehaviorCollection> 
      </behaviors:Interaction.Behaviors> 
    </ListView> 

此代码与您共享的代码一起工作良好,能够处理itemtapped事件。

+0

无论出于何种原因,代码稍后才开始工作。 Ahhh Xamarin发展之美: - D. – Johnny