СКСФ:отображать вид из другого представления при нажатии кнопки

StackOverflow https://stackoverflow.com/questions/1366057

  •  21-09-2019
  •  | 
  •  

Вопрос

я столкнулся с одной проблемой в SCSF.

У меня есть два рабочих места

  1. MdiWorkspace
  2. ПалубаРабочее пространство

у меня есть два представления в модуле

  1. Средство просмотра (отображение в mdiworkspace)
  2. Средство просмотра свойств (в рабочем пространстве колоды)

в средстве просмотра у меня есть кнопка на панели инструментов, цель которой — отобразить PropertyViewer (другой вид).

как я могу отобразить этот PropertyViewer в палубном рабочем пространстве при нажатии кнопки.

ПРИМЕЧАНИЕ: я не использую Command[CommandName].AddInvoker(control, "click:) и CommandHandler

Это было полезно?

Решение

Я предполагаю, что ваша панель инструментов находится в SmartPart, реализующем шаблон MVP.Пусть обработчик событий нажатия кнопки в SmartPart запускает событие, которое будет обрабатывать его презентатор.Ваш код презентатора будет выглядеть так:

// 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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top