ItemsControlを使用していますが、Tapコマンドで選択されたアイテムを特定したいと思います。私のxamlはここで定義されています:
<ItemsControl ItemsSource="{Binding AllMyItems}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<cmd:EventToCommand Command="{Binding ItemSelectedCommand}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
.... item template ....
これが私のビューモデルです:
public RelayCommand<MyItem> ItemSelectedCommand { get; private set; }
public MainViewModel()
{
ItemSelectedCommand = new RelayCommand<MyItem>(ItemSelected);
}
private void ItemSelected(MyItem myItem)
{
throw new NotImplementedException();
}
コマンドするイベントは機能しますが、ItemSelectedメソッドに到達すると、myItemがNullになるか、それをキャストする例外が発生します(xamlでのCommandParameterの定義方法によって異なります)。
ListBoxを使用して設定すると、これを実行できますCommandParameter="{Binding SelectedItem, ElementName=MyItemsList"}
ItemsControlでこれを行う方法についてのアイデアはありますか?それとも、パフォーマンスの違いは、マンゴーの2つの違いをあまり大きくしませんか?