2009-12-10 66 views
1

我有关于在WPF和Silverlight平台上使用XAML的问题。将WPF XAML转换为Silverlight XAML

背景:

我有一个Silverlight应用程序,需要通过XAML中WPF的,并做一些计算来更新XAML。当我在WPF中运行更改时,我解析XAML并将其转换为Canvas对象,该工作完美无瑕。问题是WPF去掉了silverlight命名空间,甚至删除了一些元素的名称。

,我使用XAML转换成画布

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对象后,Canvas的Xaml变为:

<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

请问您可以添加一些关于您的问题的更多细节?在画布上使用“名称”而不是“x:Name”在Silverlight和WPF中都是完全有效的,那么为什么这对你来说是个问题? – KeithMahoney 2009-12-10 18:39:59

+0

我真的不知道如果使用“名称”而不是“x:Name”在silverlight中是完全有效的。我面临的最大问题是我们有一些用Silverlight1编写的代码,如果我们使用“Name”而不是“x:Name”,它不能确定它是否仍然有效。而且,这还没有解释一些名字消失。 – junk 2009-12-10 21:56:20

+0

有一点值得一提的是,当我从Canvas中取出Xaml时,我使用了XamlWriter.Save()。我不确定这是否是问题 – junk 2009-12-10 22:10:40

回答