отделять вообще ничего не имеет особого смысла, а имеет смысл — выделение отдельных граней.
отделение приводит к тому, что потом при решение реальной задачи приходится тратить кучу ресурсов на преоделение настроенных ранее барьеров
например, css — хорошо смотрится, благодаря тому, что его функционал лишь выделен из html-я, а не отделен (всё(значимая часть) что делается через css, можно в один-один сделать прямо в html-аттрибутах)
ps
wpf плох тем, что он отделен(фундаментально огорожен) от c#.
в c# — хрен запишешь один в один wpf-дерево (из-за невозможности объявления имен по месту), а в wpf — хрен запишешь связи.
ззы
твой framework еще хуже, т.к. у тебя html совсем "фундаментально огорожен" от динамической генерации.