我有一个Xaml文件,用于可以为Silverlight和WPF构建的项目中。我想使用GridSplitter控件。但是,此控件位于Silverlight和桌面WPF上的不同Xaml名称空间中。
在WPF中,命名空间为:http://schemas.microsoft.com/winfx/2006/xaml/presentation
在Silverlight上,它是:http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk
因此,如果xaml代码是<GridSplitter/>
,它将适用于WPF但不适用于Silverlight,如果代码是<sdk:GridSplitter/>
,它将适用于Silverlight但不适用于WPF。
有没有办法写这个,以便它可以在两个平台上运行?
答案 0 :(得分:2)
我最终做的是创建自己的派生自GridSplitter的类。
public class MyGridSplitter : GridSplitter { }
然后我在xaml文件的顶部为我的项目添加了一个xmlns:
xmlns:local="clr-namespace:mynamespace"
然后我可以为GridSplitter使用本地名称空间前缀:
<local:MyGridSplitter />
答案 1 :(得分:1)
是的,在你的wpf中使用这个命名空间: 的的xmlns:SDK = “http://schemas.microsoft.com/winfx/2006/xaml/presentation”强> 然后标签是相同的。你只需要改变x:sdk标签就可以从wpf转移到silverlight并返回。