Я пытаюсь передать объект 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
Попробуйте привязать SelectedItem вашего DataGrid к свойству в вашей вью-модели.
Затем вы можете получить доступ к этому свойству в методе OpenTradeHistory()
.