4

私はそれをたくさん見ました、そしてそれが何を意味するのか分かりません。名前空間と関係があると思いますか?私はすでにそれをグーグルで検索しましたが、それが何の目的であるかは私にはわかりませんでした。

誰かがそれが何であるか、そしてそれが通常どのような状況で使用されるかを説明できますか?

ありがとう

編集:

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
    </Grid>
</Window>

ただし、たとえば、上記のコードでは、コードの1行目xで同じx権利を使用していますが、3行目でXAML名前空間のエイリアスとして定義しています。これはどのように起こりますか?それは物事が現れる順序を気にしませんか?

edit2: 私が間違っている場合は訂正してください:

ウィンドウx:Class = "WpfApplication8.MainWindow"

上記のコードは、Windowから派生したクラスをx:WpfApplication8.MainWindow名前空間に配置します。

ウィンドウx:Name = "abc"

x名前空間にabcという名前のWindowクラスのインスタンスを配置します。そうですか?

私が正しい場合、xエイリアスを使用しなかった場合、クラス(最初のケース)とインスタンス(2番目のケース)の両方のケースがどこに入れられたでしょうか?どこにも、匿名タイプのようなものですか?それらは使用されていますが、それらが存在する場所は定義されていませんか?

4

2 に答える 2

11

正解です。これはXML名前空間エイリアスです。http://schemas.microsoft.com/winfx/2006/xamlxamlファイルの先頭を見ると、名前空間にマップされていることがわかります。後でプレフィックスを使用すると、xamlパーサーは、すべてを入力しなくても、その名前空間で定義されたクラスを見つけることができます。using alias = very.long.namespace;C#の構文と同じです。

通常、xamlファイルで使用する名前空間ごとに異なるエイリアスを設定する必要があります。PRISMを使用する場合の一般的なものは、 ;calへのマッピングです。次に、を使用して、そのCLR名前空間で定義されclr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentationたクラスにアクセスできます。Expression Blendを使用すると、デザイン時の機能(アートボードのユーザーコントロールの幅と高さを設定する)が追加され、それが可能になることがよくあります。RegionManagercal:RegionManagerxmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"


質問編集への応答: xamlがこの機能を継承するXML名前空間チュートリアルを確認することをお勧めします。あなたの例では、手続き型コードのように行を個別の命令であると考えるのをやめ、要素全体を考慮する必要があります。私が言おうとしているのは、要素にxmlns:x表示されるためWindow、その要素とそれに含まれるすべての子要素にアクセスできるため、xamlは手続き型コードのように上から下に実行されないため、実際に表示される行は重要ではないということです。 。


質問編集2への応答:x:Class属性は、xamlファイルから生成された部分クラスの名前をコンパイラーに指示します(これが「Windowから派生したクラスを配置する...」という意味の場合は、あなたは正しいです)。

2番目の部分では、x:Name属性は、属性がアタッチされている要素への参照を含むクラス内のフィールドを生成するようにコンパイラーに指示します。これが意味するのは、あなたの例では、コードビハインドファイルがthis.abcxamlマークアップで定義されたWindow要素を参照するために使用できるということです。

于 2010-02-17T05:16:26.320 に答える
2

これは名前空間定義エイリアスです。

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

速記またはusing/importステートメントのように機能します。

タグ属性alaで名前空間を定義することによりx:Name、正しいスペースで正しい属性を使用していることが保証されます。

カスタムWPFコントロールを使用する場合は、独自のアセンブリ名前空間エイリアスを追加する必要があることに気付いたかもしれません。

于 2010-02-17T05:20:40.257 に答える