Ayrat
но сидит внутри и он её меняет как хочет
Vasily
Внутрь актора идея интересная, конечно
Ayrat
Я бы не стал делать вьюмодель, которая спрашивает акторсистему асками о статусах, запросы и пр
Ayrat
потому что так плохо получалось всегда. Те же проблемы что и с вебсервером внешним, который как-то должен общаться с акторами.
Ayrat
Т.е. как-то послать запрос, дождаться ответа. А если всё внутрь актора запилить, всё ок становится резко.
Vasily
Ну как резко
Bonart
Ну как резко
Актор вместо затягивания ответа сразу отвечает "занят"
Vasily
В целом можно, наверное, создавать вм внутри актора
Ayrat
Я не разбирался в WPF прям по-хардкору, но он вроде сам создаёт объекты VM. Т.е. там надо публичный класс без конструкторов вроде
Ayrat
это пожалуй единственный геморой
Vasily
Вот ща понятно, что точно не разбирался :)
Ayrat
:D
Vasily
По wpf я большой спец
Ayrat
ладно, ладно, я лучше про акку буду затирать. в WPF я два приложения сделал за всю жизнь
Bonart
По wpf я большой спец
А я маленький :)
Ayrat
в одном было 2 окна, во втором пяток.
Vasily
Нубы
Vasily
Я свой фреймворк пилил
Bonart
И хде твой гитхаб? ;)
Ayrat
Если найдёшь способ как подать объект вьюмодели в актора, поделись, интересно
Vasily
В те годы это еще не было модным
Ayrat
т.е. просто сделать let viewModel = new ViewModel() в конструкторе актора конечно можно, но боюсь что инстанс ViewModel в акторе и тот, который будет на экране отрисовываться будет немного разный)
Bonart
А в конструктор актору поадвать можно?
Vasily
Ну если локально, то вроде сериализация не используется
Ayrat
А в конструктор актору поадвать можно?
да, там можно как карированием (если акторы функциями создаёшь), так и через DI (если акторы классами рисуешь)
Vasily
Хмм.... а ведь, кажись , можно и без vm обойтись
Vasily
Если написать правильный MarkupExtension
Vasily
Хотя не, все равно проблема последней мили
Vasily
Это все к вопросу, почему я хотел майлбокс использовать в качестве стейта актора
Vasily
С другой стороны, можно вм как наследника актора объявить
Vasily
И тогда все становится на свои места
Vasily
Т.е. биндиться на экземпляр автора
Vasily
Актора
Ayrat
O_O
Vasily
Нуачотакого?
Ayrat
а актор система его как создаст??
Vasily
Как обычно
Ayrat
а как WPF подхватит это самое?
Vasily
Через другой актор
Ayrat
ну ладно (я ничерта не понял, но делаю вид что понял и ухожу огородами)
Vasily
Есть viewmanager, который спавнит акторы
Vasily
И умеет их подкладывать в datacontext main window
Vasily
Условно, он принимает запрос на переход на следующий шаг, убивает предыдущий актор
Vasily
СОздает новый и подкладывает
Ayrat
можешь пример реально работающего приложения скинуть?
Ayrat
мне очень любопытно посмотреть как это реализовать
Vasily
Этот момент я сейчас обдумываю
Vasily
Просто меня немного заебал дуализм в отношениях акторов и вм, ими порождаемых
Vasily
Надо, кстати, ща попробовать
Pavel
https://github.com/p69/akka.net/blob/coreclr/src/examples/AkkaChat/Features/Settings/SettingsContoller.cs
Pavel
Вот мой вариант актора, который создает vm, view, связывает это и мутирует vm
Pavel
только C#
Ayrat
а это будет работать в WPF?
Vasily
Идея понятна, но есть похитрее
Vasily
Будет, конечно
Ayrat
ну т.е. то что ты где-то создал VM через new
Ayrat
как пропихнуть это в отображение
Vasily
У него однократная инициализация
Ayrat
чтобы он отрендерил
Ayrat
т.е. для меня этот код выглядит так - где-то создали инстанс VM. Я их мог ещё десяток таких же создать в миллионе мест. Как WPF понимает что именно ЭТОТ инстанс надо биндить к вьюхе?
Pavel
а дальше отрабатывает механизм биндинга
Ayrat
так там же в акторе создается инстанс view и сетайется промерти Vm
я плох в WPF. Создание объекта View вызывает его рендер?
Vasily
Нет
Vasily
Ты его подкладываешь в datacontext
Ayrat
т.е. как только мы делаем new View(viewModel) тут же на экране появляется что-то
Pavel
не
Ayrat
ааа, понял
Vasily
А дальше можешь навесить шаблон отображения
Ayrat
а где тут про датаконтекст в коде?)
Vasily
Ну там нету
Ayrat
короче, где самая мякотка
Vasily
Там, видно, сразу визуальное дерево
Ayrat
потому что как создать класс внутри класса - понятно было(
Pavel
ну и еще родительский актор, который управляет окном приложения и умеет рисовать нужную вью
Vasily
Мрак
Ayrat
Context.Parent.Tell(new ShowView(_view));