Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
.net 在XAML中导入命名空间时会发生什么?_.net_Wpf_Xaml_Namespaces_Xml Namespaces - Fatal编程技术网

.net 在XAML中导入命名空间时会发生什么?

.net 在XAML中导入命名空间时会发生什么?,.net,wpf,xaml,namespaces,xml-namespaces,.net,Wpf,Xaml,Namespaces,Xml Namespaces,我有一个软件项目,我正在WPF中与其他几个“助手”程序集一起工作,其结构如下: 控件(WPF自定义控件库) 图书馆(C类图书馆) 主要项目(WPF应用) 在“控件”程序集中,我有几个名称空间将相关类型的控件分组在一起。这使得管理程序集中的代码变得容易,因为名称空间与文件夹名称相同 然而,当我在项目的其他部分使用这些控件时,这可能会有点混乱,特别是当我有时不得不在同一个文件中使用多个名称空间声明来引用“控件”程序集的不同部分时 我一直在想,把我所有的控件放在一个更集中的名称空间中是否更有意义,

我有一个软件项目,我正在WPF中与其他几个“助手”程序集一起工作,其结构如下:

  • 控件(WPF自定义控件库)
  • 图书馆(C类图书馆)
  • 主要项目(WPF应用)
在“控件”程序集中,我有几个名称空间将相关类型的控件分组在一起。这使得管理程序集中的代码变得容易,因为名称空间与文件夹名称相同

然而,当我在项目的其他部分使用这些控件时,这可能会有点混乱,特别是当我有时不得不在同一个文件中使用多个名称空间声明来引用“控件”程序集的不同部分时

我一直在想,把我所有的控件放在一个更集中的名称空间中是否更有意义,我可以在任何地方使用它。这样做的障碍是,每次我使用该名称空间时,它都会引用程序集中的所有控件。但是,它会使我的XAML更干净

那么,当我在XAML中导入名称空间引用时,实际会发生什么?它的工作方式和C#一样吗?如果我有一堆未使用的参考资料,会发生什么?如果我将所有控件都放在同一个名称空间中,从性能角度看是否可以

或者,我只是愚蠢地问了一个完全错误的问题吗

我一直在想,把我所有的控件放在一个更集中的名称空间中是否更有意义,我可以在任何地方使用它

真的没有必要这么做

这样做的障碍是,每次我使用该名称空间时,它都会引用程序集中的所有控件。[…]那么,当我在XAML中导入名称空间引用时,实际会发生什么?[…]如果我周围有一堆未使用的参考资料,会发生什么

没什么大不了的。XAML名称空间只是编译时解析对象引用的机制。编译器最终会忽略任何未使用的引用。它对性能没有影响

如果我将所有控件都放在同一个名称空间中,从性能角度看是否可以

性能不会受到任何影响,但我建议保留现有的文件和文件夹结构

您可以做的是使用将来自不同C#名称空间的控件放入同一逻辑XAML名称空间。此属性放置在AssemblyInfo.cs文件中,如下所示:

[assembly: XmlnsDefinition("http://mycompany.com/controls", "MyCompany.Controls.Core")]
[assembly: XmlnsDefinition("http://mycompany.com/controls", "MyCompany.Controls.Primitives")]
在引用此程序集的程序集中,可以执行以下操作:

...
xmlns:mycontrols="http://mycompany.com/controls"
...
<mycontrols:Foo ... />
<mycontrols:Bar ... />
。。。
xmlns:mycontrols=”http://mycompany.com/controls"
...

因此,
Foo
控件可以位于C#名称空间
MyCompany.Controls.Core
中,
Bar
控件可以位于C#名称空间
MyCompany.Controls.Primitives中,但两者都可以使用相同的XAML名称空间进行引用(
http://mycompany.com/controls
,这里用
mycontrols
前缀别名)。

它的行为应该与代码类似,因为xaml不是被解释的,而是被编译的,当它被编译时,它由使用它的CODIC生成和组装,创建一个定义良好的对象。行为类似于c#(在您的例子中)对于importsAh的管理,这听起来像是我一直在寻找的解决方案。非常感谢。