У меня вопрос об использовании 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?
Приветствия
Не могли бы вы добавить более подробную информацию о вашей проблеме? Использование «Name» вместо «x: Name» на Canvas отлично действует как в Silverlight, так и в WPF, так почему же это проблема для вас? – KeithMahoney
Я, честно говоря, не знал, что использование «Имя» вместо «x: Имя» полностью действует в silverlight. Самая большая проблема, с которой я столкнулся, заключается в том, что у нас есть код, написанный в Silverlight1, который я не уверен, будет ли он работать, если мы будем использовать «Имя» вместо «x: Имя». Кроме того, это все еще не объясняет, что некоторые имена исчезли. – junk
Одна вещь, которую стоит упомянуть, когда я получаю Xaml из Canvas, я использовал XamlWriter.Save(). Я не уверен, что это проблема – junk