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

1つはvb.Net用であり、CSHARPディレクトリもあることに注意してください。

編集

私の知る限り、テンプレートは各プロジェクト用ではなく、各コンピューター用ですが、テンプレートを編集するときに、次のような条件を使用できます。

$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;

$ rootnamespace $定数を使用して、特定のプロジェクトをチェックしてから、名前空間を追加するかどうかを指定できます。たぶん、現在のプロジェクト名の定数が存在するのか、私にはわかりませんが、この目的には$rootnamespace$で十分なはずです。

于 2012-07-12T11:50:05.237 に答える
3

Engine名前空間で使用しているアセンブリのソースコードが独自のものである場合は、プレフィックスの再要求と何かを追加する要求を実際に完全に削除できます。このちょっとしたトリックで、xaml名前空間に独自の名前空間を追加するだけです(すでに含まれています)。

「エンジン」プロジェクト(xmlns:Engine行があるプロジェクトではなく、使用するプロジェクトと同じにすることはできません。その場合は機能しません)で、WindowsBase参照が追加されていることを確認してから、以下を追加します。 AssemblyInfo.cs / AssemblyInfo.vbファイル(c#:プロパティフォルダーにあります)(vb:[すべてのファイルを表示]ボタンを使用する必要があります。そうすると、[マイプロジェクト]フォルダーにあります):

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 に答える