Поэтому я пытаюсь передать SelectedItem
в качестве параметра, чтобы я мог использовать данные, которые к нему привязаны.
По сути, я хочу открыть MessageBox
и отобразить свойство Name
пользователя, связывающего этот элемент.
Это мой xaml
<ItemsControl ItemsSource="{Binding CardViewModel.Users}"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True"
dd:DragDrop.UseDefaultEffectDataTemplate="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<controls:UserCard>
<controls:UserCard.ContextMenu>
<!-- Bind the DataContext of the CM to the DataContext that's bound to the RootObject-->
<ContextMenu DataContext="{Binding DataContext, Source={local:RootObject}}">
<MenuItem Header="Edit"
Command="{Binding CardViewModel.EditUser}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},
Path=PlacementTarget.SelectedItem}"/>
</ContextMenu>
</controls:UserCard.ContextMenu>
</controls:UserCard>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Команда работает нормально, все связано просто отлично, кроме того, что когда я нажимаю MenuItem
, и она запускает команду, я ставлю точку останова там, где происходит действие, и она показывает параметр как null
Я подозреваю, что это я кто связывает это неправильно.
public void DisplayEditUser(object user)
{
if (user != null)
{
MessageBox.Show("Not null");
}
}