答えて
類似の目的で使用されていますが、互換性はありません。 x:キーは辞書に値として追加される項目に使用されます。ほとんどの場合、スタイルやResourceDictionaryに追加される他のリソースのために使用されます。 x:Key属性を設定すると、オブジェクトには対応するプロパティが実際には存在せず、付属の依存プロパティも設定されます。これは、XAMLプロセッサがDictionary.Addを呼び出すときに使用するキーを知るために使用されます。
x:名前は少し複雑です。親要素のスコープ内のオブジェクト(通常はFrameworkElementから派生したオブジェクト)に関連する名前を適用するために使用されます。このスコープは "ネームスコープ"と呼ばれ、それを考える最も簡単な方法は、<TextBox x:Name="foo" />
を含むUserControlを想像することです。
各UserControlに固有のネームスコープがあるため、「foo」という名前を付けずに、UserControlの複数のインスタンスをウィンドウに配置できます。
FrameworkElementは、x:Nameの設定と同じ名前の依存関係プロパティを定義しています。
もう1つの違いは、XAMLデザイナーがx:Nameを持つ要素のコードビハインドにメンバーを作成する点です。これは、x:Keyを使用して辞書に追加されたオブジェクトには当てはまりません。
詳細については、the x:Name directiveのMSDNドキュメントの備考セクションを参照してください。
x:KeyはResourceDictionary要素の有効範囲内でのみ有効です。 x:Keyは、ResourceDictionary内の要素の主識別子として使用されます。
一方、x:NameはResourceDictionary以外のすべてのスコープで有効です。 x:KeyはResourceDictionaryスコープ外では無効です。
@Alastair、可能性のある詐欺として記載されている質問は、これとは関係ありません。 – Josh
どのように重複していますか?もう1つの質問は 'Name'と' Type'について話します。この質問は 'Key'と' Name'についてです。 – jalf
私の間違い、私は "可能性のある詐欺"の質問を誤解しました。謝罪。 –