如何将ListView.ItemTapped事件绑定到Xamarin Forms中的ViewModel命令?

Abs*_*ith 5 prism mvvm xamarin xamarin.forms

我正在使用Prism实现MVVM。

而且我有一个情况,我有一个ListView,必须处理ItemTapped事件,还必须获取被点击的项目。

我尝试使用EventToCommandBehavior。

但是我无法使它起作用,因为它无法识别添加的引用。

Dan*_* S. 5

在EventToCommandBehavior当前不存在在的NuGet提供的PRE1包。这应该在 pre2 发布时可用。

我的建议是,您现在可以将 EventToCommandBehavior 复制到您的项目中,或者您可以添加我使用的一个:

/// <summary>
/// ListView Item Tapped Behavior.
/// </summary>
public class ItemTappedBehavior : BehaviorBase<ListView>
{
    /// <summary>
    /// Gets or sets the command.
    /// </summary>
    /// <value>The command.</value>
    public ICommand Command { get; set; }

    /// <inheritDoc />
    protected override void OnAttachedTo( ListView bindable )
    {
        base.OnAttachedTo( bindable );
        AssociatedObject.ItemTapped += OnItemTapped;
    }

    /// <inheritDoc />
    protected override void OnDetachingFrom( ListView bindable )
    {
        base.OnDetachingFrom( bindable );
        AssociatedObject.ItemTapped -= OnItemTapped;
    }

    void OnItemTapped( object sender, ItemTappedEventArgs e )
    {
        if ( Command == null || e.Item == null ) return;

        if ( Command.CanExecute( e.Item ) )
            Command.Execute( e.Item );
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的 Xaml 中

<ListView.Behaviors>
    <behaviors:ItemTappedBehavior Command="{Binding SelectedItemCommand}" />
</ListView.Behaviors>
Run Code Online (Sandbox Code Playgroud)