LINUX.ORG.RU

История изменений

Исправление peregrine, (текущая версия) :

Ну я вчера жевал это добро, правда на авалонии и там куда сложнее просто окно передать, чем в случае WPF (не сложнее, можно его в конструктор засунуть, но вот только превьюшка от этого сломается, потому как превьюшка авалонии не умеет в конструкторы с параметрами). На самом деле говнодизайн когда упоротые всё строго по MVVM или ещё какому-то паттерну делают. Это как всё на лямбдах писать или вообще всё без лямбд. Никто в здравом уме так не делает почему-то если ЯП содержит лямбды. Но совсем упоротые авторы авалонии (а упороты они потому что пытаются ежа с носорогом скрестить - а именно десктоп модель с окнами и мобильную модель с активити которые ни разу не окна) там костылики подложили, вроде такого:

var mainWindow = Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop ? desktop.MainWindow : null;
чтоб можно было добраться до окна из любого места (правда тут всё сильно от версии авалонии зависит и костылик менялся по времени). Так реально костыли часто используют, я бы не стал заморачиваться особо, если окном прямо плотно не нужно управлять. Одно только закрытие и открытие окон как по мне можно и через костыли делать. А так что-то типа такого пилить https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/march/mvvm-messe.... ХЗ короче, стоит спросить lovesan, может он правильнее подскажет.

Исходная версия peregrine, :

Ну я вчера жевал это добро, правда на авалонии и там куда сложнее просто окно передать, чем в случае WPF (не сложнее, можно его в конструктор засунуть, но вот только превьюшка от этого сломается, потому как превьюшка авалонии не умеет в конструкторы с параметрами). На самом деле говнодизайн когда упоротые всё строго по MVVM или ещё какому-то паттерну делают. Это как всё на лямбдах писать или вообще всё без лямбд. Никто в здравом уме так не делает почему-то если ЯП содержит лямбды. Но совсем упоротые авторы авалонии там костылики подложили, вроде такого:

var mainWindow = Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop ? desktop.MainWindow : null;
чтоб можно было добраться до окна из любого места (правда тут всё сильно от версии авалонии зависит и костылик менялся по времени). Так реально костыли часто используют, я бы не стал заморачиваться особо, если окном прямо плотно не нужно управлять. Одно только закрытие и открытие окон как по мне можно и через костыли делать. А так что-то типа такого пилить https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/march/mvvm-messe.... ХЗ короче, стоит спросить lovesan, может он правильнее подскажет.