Domanda

Sto affrontando un problema in SCSF.

Ho due spazi di lavoro

  1. MdiWorkspace
  2. DeckWorkspace

ho due visualizzazioni in un modulo

  1. Visualizzatore (visualizza in mdiworkspace)
  2. Visualizzatore proprietà (nel deckworkspace)

nel Viewer ho un pulsante nella barra degli strumenti il ​​cui scopo è visualizzare PropertyViewer (un'altra vista).

come posso visualizzare questo PropertyViewer nel deckworkspace contro l'evento clic sul pulsante.

NOTA: non sto utilizzando Command[CommandName].AddInvoker(control, "click:) e CommandHandler

È stato utile?

Soluzione

Presumo che la barra degli strumenti si trovi in ​​una SmartPart che implementa il modello MVP.Fare in modo che il gestore eventi clic sul pulsante nella SmartPart attivi un evento che verrà gestito dal relativo relatore.Il tuo codice presentatore sarebbe simile a questo:

// Presenter code

protected override void OnViewSet()
{
   this.View.ToolbarButtonClick += View_ToolbarButtonClick;
}

public void View_ToolbarButtonClick(object sender, EventArgs e)
{
    // remove the handler so the property viewer 
    // will only be added the first time
    this.View.OnToolbarButtonClick -= View_ToolbarButtonClick;

    var propertyView = new PropertyViewer();
    this.WorkItem.Workspaces[WorkspaceNames.MyDeckWorkspace].Show(propertyView);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top