Rob*_*bin 7 c# xml silverlight wpf xaml
我有两个类似的项目.一个是Silverlight项目,另一个是WPF.它们都包含一些名称空间和大量自定义用户控件.
由于控件分布在许多名称空间中,因此当我使用它们时,我必须定义相当多的名称空间.所以我开始在以下位置定义XML命名空间AssemblyInfo.cs:
[assembly: XmlnsPrefix("http://ui.example.com/xaml/touch", "cui")]
[assembly: XmlnsDefinition("http://ui.example.com/xaml/touch", "example_ui.controls")]
[assembly: XmlnsDefinition("http://ui.example.com/xaml/touch", "example_ui.themes")]
现在我必须在每个文件中只定义一个命名空间:
xmlns:cui="http://ui.example.com/xaml/touch"
不幸的是,这仅适用于Silverlight.我的问题是,如何在WPF项目中使用它?
在WPF项目中,我得到如下错误:
Error   5   The tag 'LookUpField' does not exist in XML namespace
   'http://ui.example.com/xaml/touch'. Line 7 Position 14.  D:\src\prototype\lookup-control\lookup-control\MainWindow.xaml  7   14  lookup-control
尽管该教程适用于 Silverlight,但我相信它对于 WPF 可能不准确。请参阅此处接受的答案。
我在 WPF 中有一个带有自定义控件的单独程序集,并且可以XmlnsDefinition毫无问题地使用该属性。我认为问题在于构建程序集之前需要存在的定义。因此,即使控件将显示在设计器中,也无法构建它,因为编译器在编译 BAML 中的 XAML 时需要定义,这些定义稍后会构建到程序集中。
编辑
我创建了另一个WPF用户控件库并添加了与您使用的相同的XmlnsDefinitions,将用户控件库的引用添加到我的WPF应用程序项目中,<cui:UserControl1 />在我的中使用MainWindow.xaml并且没有错误。