#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();