Используя MVVM, как передать SelectedItems XamDataGrid как параметр к Команде, повышенной ContextMenu?

Я пытаюсь передать объект XamDataGrid, на котором я делаю щелчок правой кнопкой мыши для открытия ContextMenu, который повышает Команду в моем ViewModel. Так или иначе метод, который называет Команда, не достижим в режиме отладки.

Это - отрезанный от представления

<ig:XamDataGrid DataSource="{Binding DrdResults}" Height="700" Width="600">
  <ig:XamDataGrid.ContextMenu>
    <ContextMenu DataContext="{Binding RelativeSource={RelativeSource Mode=Self},
                               Path=PlacementTarget.DataContext}"
                 AllowDrop="True" Name="cmAudit">
      <MenuItem Header="View History" 
                Command="{Binding ViewTradeHistory}"
                CommandParameter="{Binding Path=SelectedItems}">
      </MenuItem>
    </ContextMenu>
  </ig:XamDataGrid.ContextMenu>
  <ig:XamDataGrid.FieldSettings>
    <ig:FieldSettings AllowFixing="NearOrFar"
                      AllowEdit="False" 
                      Width="auto" Height="auto"  />
  </ig:XamDataGrid.FieldSettings>
</ig:XamDataGrid>

Мой код в соответствующем ViewModel для этого Представления следующие.

public WPF.ICommand ViewTradeHistory
{
  get
  {
    if (_viewTradeHistory == null)
    {
      _viewTradeHistory = new DelegateCommand(
      (object SelectedItems) =>
      {
        this.OpenTradeHistory(SelectedItems); 
      });
    }
    return _viewTradeHistory;
  }
}

И наконец фактический метод, который называет Команда, как ниже

private void OpenTradeHistory(object records)
{
  DataPresenterBase.SelectedItemHolder auditRecords
    = (DataPresenterBase.SelectedItemHolder)records;
  // Do something with the auditRecords now.
}

Я не уверен, что я делаю неправильно здесь. Любая справка будет очень цениться.

Спасибо, Shravan

5
задан Konrad Viltersten 6 October 2015 в 15:13
поделиться

1 ответ

Попробуйте привязать SelectedItem вашего DataGrid к свойству в вашей вью-модели.

Затем вы можете получить доступ к этому свойству в методе OpenTradeHistory().

2
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: