Какое исключение вы получаете? Вы можете найти его, посмотрев на значок ошибки скрипта в строке состояния вашего браузера. Если вы не имеете в виду, что это на самом деле полностью убивает процесс браузера. Этого не должно быть, но если это произойдет, вы можете подключить Visual Studio к процессу браузера, прежде чем перейти на страницу.
Теперь у меня есть несколько догадок о том, в чем проблема. Прежде всего, вы ссылаетесь на некоторые компоненты в вашем шаблоне, которые существуют только в пределах области страницы. Например, ваша кнопка ссылается на статический шаблон «GlassPlay», а также (хотя и закомментированный) ссылается на обработчик addPlayListItemButton_Click, который будет находиться в выделенном фрагменте кода. У XamlReader нет контекста, чтобы понять, куда эти вещи подключать.
Просто внутренний совет, пользовательские элементы управления не загружают себя с помощью XamlReader, а вместо этого загружают с помощью Application.LoadComponent. У LoadComponent есть некоторая область действия, но он по-прежнему ожидает, что вся разметка будет загружена как единое целое, и ожидает, что все это будет получено из URI ресурса (нет способа загрузить из строки).
Возможны динамические шаблоны данных, и даже ссылки на ресурсы вне шаблона должны быть в порядке. Я знаю, что это работает в WPF, и ресурсы разрешаются, когда шаблон добавляется в визуальное дерево. Я не уверен, что это работает в Silverlight, но я уверен, что это работает.
Обработчик кликов - ваша самая большая проблема. Не пытайтесь назначить обработчик в разметке. Вместо этого дайте кнопке имя и используйте FindName на экземпляре шаблона после его загрузки, чтобы удержать кнопку. Оттуда вы можете подписаться на события в коде.
Надеюсь, это поможет.