45
A
回答
43
雖然它們用於類似的目的,但它們不可互換。 x:Key用於作爲值添加到字典中的項目,通常用於添加到ResourceDictionary中的樣式和其他資源。設置x:Key屬性時,實際上對象上沒有對應的屬性,甚至沒有設置附加的依賴項屬性。它只是被XAML處理器用來調用Dictionary.Add時知道什麼鍵。
x:名稱有點複雜。它用於在某個父元素的範圍內將關聯名稱應用於對象(通常是從FrameworkElement派生的對象)。此範圍稱爲「名稱範圍」,想象它的最簡單方法是想象一個包含<TextBox x:Name="foo" />
的用戶控件。
然後,您可以將UserControl的多個實例放到窗口中,而不會名爲「foo」,因爲每個UserControl都有自己的名稱範圍。
值得注意的是FrameworkElement定義了一個名爲Name的依賴項屬性,它相當於設置x:Name。
另一個區別是,XAML設計器在具有x:Name的元素的代碼隱藏中創建成員。使用x:Key添加到字典中的對象不是這樣。
有關這些的更多信息,請參閱the x:Name directive的MSDN文檔的備註部分。
20
x:鍵只在ResourceDictionary元素的範圍內有效。 x:Key用作ResourceDictionary中元素的主標識符。
另一方面,x:Name在除ResourceDictionary以外的所有其他範圍內都有效。 x:Key在ResourceDictionary範圍外無效。
相關問題
- 1. x:Key和x之間的區別:名稱
- 2. 使用x:WPF中的名稱或名稱
- 3. OrientDB中的類名和短名稱有什麼區別?
- 4. 名稱和友好名稱有什麼區別?
- 5. 2輸入名稱有什麼區別?
- 6. 目標c中的(NSString)* name和(NSString *)名稱有什麼區別?
- 7. symfony2角色類中的角色和名稱有什麼區別?
- 8. xtype和別名有什麼區別?
- 9. 在Roslyn中,名稱和標識符有什麼區別?
- 10. 函數名稱中'state'和'status'有什麼區別?
- 11. 有什麼區別`和$(Bash中有什麼區別?
- 12. super()和Parent類名有什麼區別?
- 13. 標題和顯示名稱有什麼區別
- 14. JavaScript:函數名稱和函數引用有什麼區別?
- 15. 「./file」名稱和「../文件名」之間的區別是什麼
- 16. 將類型用作不同名稱和類型別名有什麼區別?
- 17. sqlite_master中名稱和tbl_name之間的區別是什麼?
- 18. 別名和標籤有什麼區別? (一般和在git中)
- 19. 在windows中,有名和無名信號量有什麼區別?
- 20. 有什麼區別? :和||
- 21. &&和||有什麼區別?
- 22. 「/」和「/ *」有什麼區別?
- 23. 有什麼區別:。!和:r!?
- 24. ==和===有什麼區別?
- 25. Appender和〜有什麼區別?
- 26. $ @和$ *有什麼區別?
- 27. is和=有什麼區別?
- 28. #.00和#。##有什麼區別?
- 29. `==`和`is`有什麼區別?
- 30. '=='和'==='有什麼區別?
@Alastair,您列出的可能與此無關的問題與此無關。 – Josh 2010-12-13 03:39:51
它是如何重複的?另一個問題是關於'Name'與'Type'的關係。這個問題是關於'Key'與'Name'的關係。 – jalf 2010-12-13 03:40:28
我的錯誤,我誤讀了「可能的欺騙」問題。道歉。 – 2010-12-13 03:51:20