2009-12-10 3 views
1

У меня вопрос об использовании XAML на платформах WPF и Silverlight.Преобразование WPF XAML в Silverlight XAML

фона:

У меня есть SilverLight приложение, которое необходимо передать Xaml в WPF и сделать некоторые вычисления, чтобы обновить код XAML. Когда я запускаю изменения в WPF, я разбираю XAML и конвертирую его в объект Canvas, который отлично выполняет работу. Проблема заключается в том, что WPF выделяет пространство имен silverlight и даже удаляет имя некоторых элементов.

код, который я использую для преобразования XAML в Canvas

Canvas canvas = XamlReader.Parse(xaml) as Canvas 

Вот оригинал Xaml из Silverlight:

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="Holder" Width="58" Height="23" > 

.......

После того, как я преобразую его в объект Canvas, Xaml Canvas станет следующим:

<Canvas Name="Holder" Width="58" Height="23" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
<Canvas.Clip><RectangleGeometry RadiusX="0" RadiusY="0" Rect="0,0,58,23"/> 
</Canvas.Clip><Rectangle Name="HolderBackground" Canvas.Top="0.4" Canvas.Left="0.4" Width="57.2" Height="22.2" RadiusX="0" RadiusY="0" Fill="#FFFFFF" /> 
<Canvas Name="Image1" Canvas.Top="0.8" Canvas.Left="0.8" Width="24.37999153137207" Height="21.4"> ....... 

Вы должны заметить, что xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" отсутствует. Кроме того, все x: Name теперь становятся Name. Если вы посмотрите внимательно, вы заметите, что имя этого элемента было удалено

Есть ли у всех идеи или простое решение, которое я могу преобразовать Silverlight XAML -> WPF XAML -> (назад) Silverlight XAML?

Приветствия

+0

Не могли бы вы добавить более подробную информацию о вашей проблеме? Использование «Name» вместо «x: Name» на Canvas отлично действует как в Silverlight, так и в WPF, так почему же это проблема для вас? – KeithMahoney

+0

Я, честно говоря, не знал, что использование «Имя» вместо «x: Имя» полностью действует в silverlight. Самая большая проблема, с которой я столкнулся, заключается в том, что у нас есть код, написанный в Silverlight1, который я не уверен, будет ли он работать, если мы будем использовать «Имя» вместо «x: Имя». Кроме того, это все еще не объясняет, что некоторые имена исчезли. – junk

+0

Одна вещь, которую стоит упомянуть, когда я получаю Xaml из Canvas, я использовал XamlWriter.Save(). Я не уверен, что это проблема – junk

ответ

0

Похоже, я должен самостоятельного ответа на этот вопрос, но это не defn ответ

кто-то написал пользовательский класс XamlWriter, устраняющее часть проблемы, но отсутствует название проблемы RectangleGeometry все еще будут существовать http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/08aebbf1-0a61-4305-83b2-a0a37bb24002