EventToCommandBehavior

EventToCommandBehavior

我正在使用Prism实现MVVM。

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

我尝试使用EventToCommandBehavior

但是我无法使其正常工作,因为它无法识别添加的引用。

最佳答案

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 );
    }
}


然后在您的Xaml中

<ListView.Behaviors>
    <behaviors:ItemTappedBehavior Command="{Binding SelectedItemCommand}" />
</ListView.Behaviors>

07-24 17:26