テンプレートを次のように宣言しました-
<DataGrid.Resources>
<ContextMenu x:Key="RowMenu" DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Header="Remove" Command="{Binding Cancel}" />
</ContextMenu>
</DataGrid.Resources>
行スタイルを使用してテンプレートを適用しています -
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
</Style>
</DataGrid.RowStyle>
メニューは正常に表示されます
ただし、(ItemListViewModel の) コマンドは、コンテキスト メニュー項目がクリックされたときに実行されません。
public class ItemListViewModel : INotifyPropertyChanged
{
public void Cancel()
{
MessageBox.Show("Cancel test");
}
...
}
それ以外の場合、バインディングは適切に機能しています。これは、次のようなことができるためです-
foreach (ItemListViewModel ul in mylist.SelectedItems)
MessageBox.Show(item.FullDescription);
私はそれを理解しようとして一晩中これにいました。今日WPFを始めたばかりです。
どこが間違っているのか誰か教えてください