Microsoft порадовал

Written by elwood

VisualStudio2013

На днях вычитал о вышедшей новой Visual Studio 2013 RC. Решил попробовать установить, чтобы проверить, пофиксили ли окончательно проблему с XAML-дизайнером. Проблема была в том, что наши WPF-приложения, использующие для организации UI-кода концепцию MVP (Model-View-Presenter), в базовых классах для Windows и UserControls использовали Generic-классы: ConcreteWindow: BaseWindow<TModel, TPresenter, TView>, где TModel – тип-аргумент класса модели (автоматически становится DataContext’ом), TPresenter – соответственно, класс презентера, и TView – интерфейс представления, реализуемого окном. Презентер имеет доступ к модели и к представлению (через интерфейс), представление работает с моделью посредством байндингов. Модель не знает ни о чем, кроме себя, хранит данные и оповещает об их изменении. Всё стандартно. И в старых версиях Visual Studio всё работало на ура, однако в 2012 версии майкрософтовцы перефигачили дизайнер (видимо, взяв код из Blend, поскольку там раньше наблюдалась такая же проблема), и отображение таких XAML (у которых главный элемент определяет generic-класс) отвалилось. При этом проект продолжал собираться и работать, и по спецификациям XAML всё было в порядке. Мои товарищи по несчастью тогда запостили вышеприведённый тред, и вскоре проблему вроде бы пофиксили, но, когда я установил себе обновление, всё осталось по-прежнему. Вчера я решил вновь побороться за улучшение мира, и отписался их “програм менеджеру”, рассказав свою душещипательную историю и приложив архив тестового проекта, воспроизводящего проблему. Сегодня мне пришел ответ:

microsoft-reply

Как оказалось, действительно достаточно убрать пробелы, и всё заработает ! В общем, я очень обрадовался, во-первых, быстрому ответу, а во-вторых тому, что мои изобретения снова можно использовать в современных Visual Studio. А то после неудач с 2012 студией мне казалось, что этот подход теперь будет нежизнеспособен, придется самому переезжать на традиционный MVVM, и уж точно никто из других людей не будет пользоваться технологией, которая не совместима с XAML-дизайнером. Теперь хотя бы есть надежда, что эти наработки не умрут. Собираюсь выложить их в открытый доступ, поскольку для наших проектов они оказались довольно удачным способом организации кода.