x: Tên và Tên đang tham chiếu các không gian tên khác nhau.
x: name là một tham chiếu đến không gian tên x được xác định theo mặc định ở đầu tệp Xaml.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Chỉ cần nói Tên sử dụng mặc định bên dưới không gian tên.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x: Tên đang nói sử dụng không gian tên có bí danh x . x là mặc định và hầu hết mọi người rời bỏ nó nhưng bạn có thể thay đổi nó thành bất cứ điều gì bạn thích
xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"
vì vậy tài liệu tham khảo của bạn sẽ là foo: name
Xác định và sử dụng không gian tên trong WPF
OK hãy nhìn vào điều này một cách khác. Giả sử bạn kéo và thả nút vào trang Xaml của mình. Bạn có thể tham khảo 2 cách x: tên và tên này . Tất cả xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" và
xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" là các tham chiếu đến nhiều không gian tên . Vì xaml giữ không gian tên Điều khiển (không phải 100% trên đó) và bản trình bày giữ FrameworkEuity VÀ lớp Nút có mẫu kế thừa là:
Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement,
IInputElement, ISupportInitialize, IHaveResources
Vì vậy, như mọi người mong đợi bất cứ điều gì kế thừa từ FrameworkEuity sẽ có quyền truy cập vào tất cả các thuộc tính công khai của nó. Vì vậy, trong trường hợp của Nút, nó nhận được thuộc tính Tên từ FrameworkEuity, ở đầu cây phân cấp. Vì vậy, bạn có thể nói x: Name hoặc Name và cả hai sẽ truy cập getter / setter từ FrameworkEuity.
Tài liệu tham khảo MSDN
WPF định nghĩa một thuộc tính CLR được sử dụng bởi các bộ xử lý XAML để ánh xạ nhiều không gian tên CLR vào một không gian tên XML duy nhất. Các XmlnsDefinitionAttribute thuộc tính được đặt ở mức lắp ráp trong mã nguồn sản xuất lắp ráp. Mã nguồn lắp ráp WPF sử dụng thuộc tính này để ánh xạ các không gian tên phổ biến khác nhau, chẳng hạn như System.Windows và System.Windows.Controls, vào không gian tên http://schemas.microsoft.com/winfx/2006/xaml/presentation .
Vì vậy, các thuộc tính lắp ráp sẽ trông giống như:
PresentationFramework.dll - XmlnsDefDefAttribution:
[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
tất cả thời gian hoạt động tốt. Tôi đã phải thay đổi nó thànhName
nếu không tôi không thể tham chiếu điều khiển trong mã .xaml.cs của mình vì vậy tôi sẽ giả định rằng nó không còn là trường hợp hoạt động tốt mọi lúc.