1

xmlns:Engine="clr-namespace..."如果我在每个应用程序窗口中都需要相同的命名空间,是否有可能避免?

谢谢

4

3 回答 3

3

我同意 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 的需要。

于 2012-07-12T11:50:05.237 回答
3

如果它是您自己在 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 中使用的命名空间中有多个类,则可以多次执行此操作。

于 2012-07-12T14:22:48.547 回答
1

不,没有办法避免这种情况。然而,声明一个命名空间并不意味着它消耗资源(在运行时)。

于 2012-07-12T11:40:43.123 回答