继续从链接har07发布这可能对你有一些用处,因为我看到你提到CommandParameter
。
可以使用自定义转换器将列表中的“Tapped”项作为参数发送到中继命令。
<ListView
x:Name="MyListView"
ItemsSource="{Binding MyCollection}"
ItemTemplate="{StaticResource MyTemplate}"
IsItemClickEnabled="True">
<i:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="ItemClick">
<core:InvokeCommandAction Command="{Binding ViewInMoreDetail}" InputConverter="{StaticResource TapConverter}" />
</core:EventTriggerBehavior>
</i:Interaction.Behaviors>
</ListView>
自定义转换器类
public class TapConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var args = value as ItemClickEventArgs;
if (args != null)
return args.ClickedItem;
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
在您的视图模型,你再有一个relaycommand
。
public RelayCommand<MyObject> MyRelayCommand
{
get;
private set;
}
在您的构造函数中初始化中继命令和您想要在轻敲发生时触发的方法。
MyRelayCommand = new RelayCommand<MyObject>(HandleTap);
该方法接收在列表视图中作为参数点击的对象。
private void HandleTap(MyObject obj)
{
// obj is the object that was tapped in the listview.
}
不要忘记将TapConverter添加到您的App.xaml
<MyConverters:TapConverter x:Key="TapConverter" />
你可以用'Interaction.Behaviors'将事件绑定到命令[如何添加命令行为在Windows应用商店8.1 MVVM应用程序](http://stackoverflow.com/questions/23467911/how-to-add-command-behavior-in-windows-store-8-1-mvvm-application) – har07
你可以使项目模板按钮? –
@ har07,谢谢。它帮助到我 – demas