Получение XAML текущего экрана в silverlight 2

#silverlight #xaml #image

Вопрос:

Я пытаюсь отправить свою динамически созданную страницу / изображение silverlight 2 в ASP.net веб — сервис для отображения его в виде растрового изображения.

Я вижу много примеров того, как получить XAML с помощью javascript (см. Здесь) в версии 1 silverlight, но у меня есть несколько отличий.

a) Я использую silverlight 2 RC1
b) Я динамически добавляю элементы управления на страницу в c#
c) Я бы предпочел использовать c#, чтобы получить новый XAML, чтобы сохранить все элементы управления в одном месте.

кто-нибудь знает, как извлечь XAML из элемента управления или страницы в c#?

Спасибо


Обновление: Теперь это возможно в silverlight 3 с использованием растрового изображения, доступного для записи, для сохранения XAML в формате JPEG см. мой пост в блоге здесь: http://blog.blueboxes.co.uk/2009/07/21/rendering-xaml-to-a-jpeg-using-silverlight-3/

Ответ №1:

к сожалению, для a не существует метода .ToXaml() на дереве элементов, к сожалению. Я полагаю, вы можете использовать VisualTreeHelper для создания такого метода и рекурсии через определенный элемент.

Ответ №2:

SilverlightContrib имеет класс XamlWriter, который может извлекать XAML из живого элемента управления.

Это бесплатно.

Ссылка такова: http://silverlightcontrib.org

Код будет выглядеть примерно так:

 
// using SilverlightContrib.Xaml;

            var cb = new GroupBox();
            StringBuilder sb = new StringBuilder();
            XamlWriterSettings settings = new XamlWriterSettings();

            using (XamlWriter writer = XamlWriter.CreateWriter(sb, false, settings))
            {
                writer.WriteElement(cb);
            }

            string result = sb.ToString();