@SergeySerge11

Как вызвать функцию на представление с контроллера в mvc паттерне?

//Аналогия к прмиеру
class Ctrl{
 View view; 
public void fun(){
         //..... 
        //....
         view.SendResult(res);
 }
}
public class View{
      void SendResult(int res){
              LayoutUpdate(); 
      }
}

Как переделать этот код если Ctrl не имеет ссылки на View?
В лучшем случае у меня будет какое-то свойство или команда, но команды работают в одну сторону, а мне надо в другую сторону.

К примеру на контроллере таймер, и он должен вызывать функцию к примеру LayoutUpdate();
Вообще как правильно надо решать такую задачу. Каждый раз обходные пути пишу.
К примеру в WPF DataContext не должен иметь обратную ссылку на объект привязки.
// какие есть альтернативы в стиле самурая   такому?
 // MainWindow.xaml
 ((MyCtrl)this.DataContext).Delegate=fun;
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
1. MessageBus как вариант.
2. Делайте свой UserControl с таймером, который будет его обновлять как надо, а к нему уже данные привязывать необходимые.
Ответ написан
Комментировать
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Сделай колбэк
class Ctrl
{
    Action<int> _callback; 
    public void fun()
    {
         // ...
         _callback(res);
     }
}

public class View
{
    void SendResult(int res)
    {
           LayoutUpdate(); 
    }
}


P.S. только в случае с GUI надо еще помнить, что обновления нужно делать в UI потоке
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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