x: Nama dan Nama merujuk ruang nama yang berbeda.
x: name adalah referensi ke namespace x yang didefinisikan secara default di bagian atas file Xaml.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Hanya mengatakan Nama menggunakan namespace default di bawah ini.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x: Nama mengatakan gunakan namespace yang memiliki x alias. x adalah default dan kebanyakan orang membiarkannya tetapi Anda dapat mengubahnya ke apa pun yang Anda suka
xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"
jadi referensi Anda adalah foo: name
Tentukan dan Gunakan Ruang Nama di WPF
OK mari kita lihat ini dengan cara yang berbeda. Katakanlah Anda menarik dan melepas tombol ke halaman Xaml Anda. Anda dapat merujuk 2 cara ini x: nama dan nama . Semua xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" dan
xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" adalah referensi ke beberapa ruang nama . Karena xaml memegang Control namespace (tidak 100% dari itu) dan presentasi memegang FrameworkElement AND kelas Button memiliki pola pewarisan:
Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement,
IInputElement, ISupportInitialize, IHaveResources
Jadi seperti yang diharapkan seseorang yang mewarisi dari FrameworkElement akan memiliki akses ke semua atribut publik. jadi dalam kasus Button, ia mendapatkan atribut Name dari FrameworkElement, di bagian paling atas hierarki pohon. Jadi Anda bisa mengatakan x: Nama atau Nama dan mereka berdua akan mengakses pengambil / penyetel dari FrameworkElement.
Referensi MSDN
WPF mendefinisikan atribut CLR yang dikonsumsi oleh prosesor XAML untuk memetakan beberapa ruang nama CLR ke ruang nama XML tunggal. The XmlnsDefinitionAttribute atribut ditempatkan di tingkat perakitan dalam kode sumber yang menghasilkan perakitan. Kode sumber perakitan WPF menggunakan atribut ini untuk memetakan berbagai ruang nama umum, seperti System.Windows dan System.Windows.Controls, ke http://schemas.microsoft.com/winfx/2006/xaml/presentation namespace.
Jadi atribut assembly akan terlihat seperti:
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
semua waktu berfungsi dengan baik. Saya baru saja harus mengubahnya menjadiName
kalau tidak saya tidak bisa referensi kontrol dalam kode .xaml.cs saya jadi saya akan berasumsi bahwa itu tidak lagi berfungsi dengan baik sepanjang waktu.