2009-11-02 2 views
0

Вот сценарий:Загрузка XAML с событиями и пользовательских классов для Silverlight кадра размещенного в HTML, во время выполнения

Silverlight приложение (только каркасные), который размещается на HTML-страницу (без ASPX/серверной части решения , только клиентская страница html, загруженная из c: \ somefolder \ mysilverlight.html), на самом деле она размещается в приложении WPF с помощью элемента управления WebBrowser.

Приложение WPF должно динамически внедрять Silverlight xaml в каркас Silverlight во время выполнения. Так что страница будет отображаться.

Silverlight xaml, закачанный в Wireframe, представляет собой строку xaml, которая имеет обработчики событий и пользовательские классы. Поэтому я не могу использовать XamlReader.Load.

ИнициализацияFromXaml была удалена в Silverlight 3, поэтому я не могу ее использовать.

Любые другие альтернативы?

Update: Я пытаюсь построить легкий Xaml редактор с быстрым предварительным просмотром, и мне нужно, чтобы загрузить его из строки XAML. Application.LoadComponent работает только для собранных сборок SL

ответ

1

InitializeComponent был заменен Application.LoadComponent. Вы можете вызвать метод как это:

System.Windows.Application.LoadComponent(this, new 
System.Uri("/SL_40308_VS;component/MainPage.xaml", System.UriKind.Relative)); 

Взгляните на FooPage.g.cs генерироваться SilverlightProject/OBJ/отладки в Silverlight проектов для полной выборки.

Просто вызывая, Silverlight не может скомпилировать код C# во время выполнения.
варианты:

  1. Переместить код позади на динамический язык, Silverlight может интерпретировать во время выполнения. Используя DLR, вы можете иметь код Silverlight в IronPython или IronRuby. DLR позволяет динамически загружать код IronPython/IronRuby и ассоциировать его с кодом. Отъезд sample by Jimmy Schmenti.

  2. Компиляция кода Silverlight на полной рабочей среде CLR с использованием System.CompilerServices. Nokola имеет excellent sample компиляции на стороне сервера, которую вы можете легко преобразовать в WPF.

  3. Удалить коды из динамически загружаемого XAML. Это звучит как очень уникальное техническое решение, и, возможно, это неправильно. Что вы пытаетесь сделать, это требует такого экстремального подхода?

+0

Спасибо за ваши комментарии, я пытаюсь создать легкий редактор Xaml с быстрым предварительным просмотром, и мне нужно загрузить его из строки. Application.LoadComponent работает только для скомпилированных сборок SL – Vin

+0

BTW, я посмотрел вашу статью в кодедепроекте и хотел поблагодарить вас за ее размещение. Удивительный материал там. http://www.codeproject.com/KB/silverlight/PathToReusableXAML.aspx – Vin