Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF名称空间混乱_C#_Wpf_Xaml_Namespaces - Fatal编程技术网

C# WPF名称空间混乱

C# WPF名称空间混乱,c#,wpf,xaml,namespaces,C#,Wpf,Xaml,Namespaces,我有两个需要从WPF窗口访问的CLR名称空间,它们的名称冲突 xmlns:ns1="clr-namespace:Namespace1.Namespace2.Namespace3.Namespace4;assembly=" xmlns:ns2="clr-namespace:Namespace2;assembly=Namespace2" 当我使用名称空间2中的任何内容时,例如 <Canvas> <ns2:MyControl ... /> </Canvas>

我有两个需要从WPF窗口访问的CLR名称空间,它们的名称冲突

xmlns:ns1="clr-namespace:Namespace1.Namespace2.Namespace3.Namespace4;assembly="
xmlns:ns2="clr-namespace:Namespace2;assembly=Namespace2"
当我使用名称空间2中的任何内容时,例如

<Canvas>
  <ns2:MyControl ... />
</Canvas>
我知道名称空间的命名不是很好,但是更改前者需要远离系统中其他地方使用的结构,而更改后者则需要更改系统的其他部分


是否有人对此有任何建议?

< P>如果您无法使用“XMLNS:”找到解决方案,那么您可以考虑使用<代码> XMLNSntase</C> >将多个CLRNAMSPACE映射为URI标识的XML命名空间,然后使用该URI引用CLR命名空间集合。

XmlnsDefinition
放入包含要分组的CLR类型的每个程序集的
AssemblyInfo.cs

[XmlnsDefinition("http://www.mycompany.com/appname", "Namespace1.Namespace2.Namespace3.Namespace4")]

[XmlnsDefinition("http://www.mycompany.com/appname", "Namespace2")]
然后在XAML中,您可以执行以下操作:

xmlns:ns="http://www.mycompany.com/appname"
然后,它应该允许您使用公共前缀访问这些类型


另一方面,您可能忘了在项目中添加对Namespace2 DLL的引用


如果以上都不起作用,您能否更详细地描述一下您的项目结构,例如,您能否显示MyControl代码…它所在的位置…以及代码的名称空间语句。

如果您无法使用“xmlns:找到解决方案:然后您可以考虑使用<代码> XMLNSntase< /COD>将多个CLRNAMSPACE映射为URI标识的XML命名空间,然后使用该URI引用CLR命名空间集合。

XmlnsDefinition
放入包含要分组的CLR类型的每个程序集的
AssemblyInfo.cs

[XmlnsDefinition("http://www.mycompany.com/appname", "Namespace1.Namespace2.Namespace3.Namespace4")]

[XmlnsDefinition("http://www.mycompany.com/appname", "Namespace2")]
然后在XAML中,您可以执行以下操作:

xmlns:ns="http://www.mycompany.com/appname"
然后,它应该允许您使用公共前缀访问这些类型


另一方面,您可能忘了在项目中添加对Namespace2 DLL的引用


如果以上都不起作用,你能再描述一下你的项目结构吗?例如,你能显示MyControl代码…它的所在位置…并显示代码的名称空间语句。

xmlns:ns1
行中,你是真的省略了程序集的名称,还是只是这里的一个打字错误?我实际上省略了名称。它在同一个组件中。我知道我可以省去它,但我觉得省去它更为明确。@jamesj:据我所知,省去它并不总是可能的。你能展示一下实际的代码吗。上面有一些错误,可能是打字错误,也可能是确切的问题。@jamesj:但是,我想知道
xmlns:ns2
是否在命名空间名称前面声明了
clr namespace:
。在
xmlns:ns1
行中,您是否确实省略了程序集的名称,或者这仅仅是一个打字错误?我实际上省略了这个名字。它在同一个组件中。我知道我可以省去它,但我觉得省去它更为明确。@jamesj:据我所知,省去它并不总是可能的。你能展示一下实际的代码吗。上面有一些错误,可能是打字错误,也可能是确切的问题。@jamesj:但是,我想知道
xmlns:ns2
是否在名称空间名称前面声明了
clr namespace: