x: Ad ve Ad farklı ad alanlarına başvuruyor.
x: name , Xaml dosyasının üstünde varsayılan olarak tanımlanan x ad alanına yapılan bir başvurudur.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Sadece Name adında varsayılan ad alanını kullanır.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x: Name , x diğer adı olan ad alanını kullandığını söylüyor . x varsayılan ayardır ve çoğu kişi onu terk eder, ancak istediğiniz gibi değiştirebilirsiniz
xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"
yani referans foo: isim olurdu
WPF'de Ad Alanlarını Tanımlama ve Kullanma
Tamam buna farklı bir şekilde bakalım. Diyelim ki Xaml sayfanıza bir düğmeyi sürükleyip bırakın. Bu iki yoldan bahsedebilirsiniz: x: ad ve ad . Tüm xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" ve
xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" birden çok ad alanına referanstır . Yana xaml tutan Kontrol (bu konuda değil% 100) ad ve sunum tutan FrameworkElement VE Button sınıfı bir miras modeli vardır:
Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement,
IInputElement, ISupportInitialize, IHaveResources
Dolayısıyla, FrameworkElement'den devralınan her şeyin tüm genel özelliklerine erişebileceği gibi. Button durumunda, Name özniteliğini hiyerarşi ağacının en üstündeki FrameworkElement öğesinden alıyor. Yani x: Name veya Name diyebilirsiniz ve her ikisi de FrameworkElement öğesinden alıcıya / ayarlayıcıya erişecektir.
MSDN Başvurusu
WPF, birden çok CLR ad alanını tek bir XML ad alanına eşlemek için XAML işlemcileri tarafından tüketilen bir CLR özniteliğini tanımlar. XmlnsDefinitionAttribute özelliği, montaj üreten kaynak kodunda montaj seviyesinde yerleştirilmiştir. WPF derleme kaynak kodu, bu özniteliği System.Windows ve System.Windows.Controls gibi çeşitli ortak ad alanlarını http://schemas.microsoft.com/winfx/2006/xaml/presentation ad alanına eşlemek için kullanır .
Derleme öznitelikleri şöyle görünecektir:
PresentationFramework.dll - XmlnsDefinitionAttribute:
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Data")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Navigation")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Shapes")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Documents")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls")]
x:Name
her zaman kullanmanın iyi çalıştığını göstermektedir. Ben sadece bunu değiştirmek zorunda kaldıName
aksi takdirde benim her zaman iyi çalışır durumda olmadığını varsayacağım bu yüzden benim .xaml.cs kodunda kontrol referans olamazdı.