xmlns:Engine="clr-namespace..."
如果我在每个应用程序窗口中都需要相同的命名空间,是否有可能避免?
谢谢
我同意 HCL,我认为它不能完成并且添加命名空间不会消耗更多资源。
我会给你一个替代方案。您可以更改窗口模板(或创建您自己的模板)以使其包含您的命名空间。
在我的电脑中,对于VS2010,模板的路径是:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\VisualBasic\WPF\3082
请注意,一个用于 vb.Net,还有一个 CSHARP 目录。
编辑:
据我所知,模板适用于每台计算机,而不是每个项目,但是当您编辑模板时,您可以使用条件,例如:
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
您可以使用 $rootnamespace$ 常量来检查特定项目,然后添加或不添加命名空间。我不知道,可能存在一个具有当前项目名称的常量,但 $rootnamespace$ 应该足以满足这个 pourpose 的需要。
如果它是您自己在 Engine 命名空间中使用的程序集的源代码,您可以完全删除前缀请求和添加内容的需求。通过这个小技巧,您只需将自己的名称空间附加到 xaml 名称空间(已经包含在内)。
在您的“引擎”项目中(不是您拥有 xmlns:Engine 行的项目,不能是您使用它的同一个项目,它将无法工作)确保您添加了 WindowsBase 引用,然后添加以下内容在 AssemblyInfo.cs/AssemblyInfo.vb 文件中(c#:在 Properties 文件夹中找到)(vb:您需要使用“显示所有文件”按钮,然后您会在 My Project 文件夹中找到它):
C#:
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "The.Class.Namespace")]
VB:
<Assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "The.Class.Namespace")>
如果您的项目在多个您想在其他项目 xaml 中使用的命名空间中有多个类,则可以多次执行此操作。
不,没有办法避免这种情况。然而,声明一个命名空间并不意味着它消耗资源(在运行时)。