Mit MVVM, wie pass SelectedItems einer XamDataGrid als parameter für den Befehl ausgelöst hat, indem Sie die ContextMenu?

Ich versuche, übergeben Sie das Element auf XamDataGrid, auf dem ich einen Maus-Rechtsklick öffnen Sie ein Kontextmenü, das wirft einen Befehl in meinem ViewModel. Irgendwie ist die Methode, die den Befehl aufruft, ist nicht erreichbar im debug-Modus.

Dies ist der Schnitt aus der Sicht

<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>

Meinen code in das entsprechende ViewModel für diese Ansicht ist wie folgt.

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

Und schließlich die eigentliche Methode, die aufgerufen wird, indem der Befehl ist wie folgt

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

Ich bin mir nicht sicher, was mache ich falsch hier. Jede Hilfe wird sehr geschätzt werden.

Dank,
Shravan

InformationsquelleAutor user290669 | 2010-06-09

Schreibe einen Kommentar