我有关于在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?
干杯
请问您可以添加一些关于您的问题的更多细节?在画布上使用“名称”而不是“x:Name”在Silverlight和WPF中都是完全有效的,那么为什么这对你来说是个问题? – KeithMahoney 2009-12-10 18:39:59
我真的不知道如果使用“名称”而不是“x:Name”在silverlight中是完全有效的。我面临的最大问题是我们有一些用Silverlight1编写的代码,如果我们使用“Name”而不是“x:Name”,它不能确定它是否仍然有效。而且,这还没有解释一些名字消失。 – junk 2009-12-10 21:56:20
有一点值得一提的是,当我从Canvas中取出Xaml时,我使用了XamlWriter.Save()。我不确定这是否是问题 – junk 2009-12-10 22:10:40