ListViewを含むMenuItemがあります。 What whant:リストビューアイテムをクリックすると、いくつかのコマンドが起動します。ここに私のコードは次のとおりです。ListViewアイテムのクリックイベントMVVM
<MenuItem Header="?">
<ListView ItemsSource="{Binding CommentTemplateList}" BorderThickness="0" SelectedItem="{Binding SelectedCommentTemplate, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding PasteTemplate}"
CommandParameter="{Binding SelectedCommentTemplate}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Caption}" ToolTip="{Binding Description}" HorizontalAlignment="Center"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</MenuItem>
Everithingはokですが、コマンドPasteTemplate火災は、選択が変更された場合にのみ、それは私が項目をクリックするたびに発射に私が必要。もし私がEventNameをリスト(https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.aspx)(例えばMouseDown)から1に変更すると、コマンドはまったく起動しません。
MVVMを使用しているので、ListView SelectedIndexプロパティをSelectedTemplateIndex変数にバインドしました。 マイコード:XAML: 'SelectedIndexを= "{バインディングSelectedTemplateIndex}" ' ビューモデル: 'プライベートボイドOnPasteTemplateExecute(){IF(SelectedTemplateIndex == '' -1)のリターン; LeaveCommentBox = SelectedCommentTemplate.Description; '' SelectedTemplateIndex = -1; } ' と私は同じ動作を参照してください - 選択が実際に変更されている場合のみ、コマンドが発生します。 –
'SelectedTemplateIndex = -1'はあなたの選択をリセットするはずです。 -1番目の要素を選択し(リストビューでは何も選択しないことを意味します)、再度選択することができます。 まだリセットされていない場合は、SelectedItemをリセットするか、[link](http:// stackoverflow。com/a/18462019/7538242) – GBursali