2015-12-04 2 views
1

Как получить выбранный элемент из контекстного меню, связанного с элементом управления списком в WPF?Получить элемент, выбранный после щелчка правой кнопкой мыши по контекстному меню

Это моя разметка:

<ListView Name="lvCustomerJobs"> 
    <ListView.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="Remove" 
       Click="cmCustomerRemoveJob" 
       Command="{Binding RemoveItem}" 
       CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, 
       Path=PlacementTarget.SelectedItem}" /> 
     </ContextMenu> 
    </ListView.ContextMenu> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Status" Width="150" DisplayMemberBinding="{Binding Status}" /> 
      <GridViewColumn Header="Booked in by" Width="150" DisplayMemberBinding="{Binding BookedInBy}" /> 
      <GridViewColumn Header="Date Required" Width="150" DisplayMemberBinding="{Binding DateRequired}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

Это мой код позади:

private void cmCustomerRemoveJob(object sender, RoutedEventArgs e) 
{ 
    var item = ((FrameworkElement)e.OriginalSource).DataContext as User; 
    if (item != null) 
    { 
     MessageBox.Show(item.DateRequired + " Item's Double Click handled!"); 
    } 
} 

Но пункт является недействительным?

ответ

1

Вы должны бросить sender объект MenuItem, а затем использовать CommandParameter так:

private void cmCustomerRemoveJob(object sender, RoutedEventArgs e) 
{ 
    var item = ((MenuItem)sender).CommandParameter as User; 
    if (item != null) 
    { 
     MessageBox.Show(item.DateRequired + " Item's Double Click handled!"); 
    } 
} 
+0

Извините за задержку в моем ответе. Был вызван. Это работает благодаря muhc :) –

+0

Что нужно для извлечения значения свойства CommandParameter из объекта 'sender', когда это значение уже должно быть установлено в' e'? –

0

Я привязываю свой ListView к коллекции в модели и привязываю SelectedItem к модели.

<ListView ItemSource="{Binding CustomerCollection}" SelectedItem="{Binding SelectedCustomer}"> 

Тогда мой метод команды может ссылаться на SelectedCustomer по мере необходимости.

Если это почему-то не идеально, я бы с удовольствием узнал!

+0

Извините за задержку в моем ответе. Был вызван. Я пробовал это, но это не сработало. Пункт все еще null –