我正在使用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>