x: Имя и имя ссылаются на разные пространства имен.
x: name - это ссылка на пространство имен x, определенное по умолчанию в верхней части файла Xaml.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Просто сказать Имя использует по умолчанию ниже имен.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
х: Имя говорит использовать пространство имен, которое имеет псевдоним х. х по умолчанию, и большинство людей покинуть его, но вы можете изменить его на то, что вам нравится
xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"
так что ваша ссылка будет Foo: имя
Define and Use Namespaces in WPF
EDIT:
OK Давайте посмотрим на это по-другому. Скажем, вы перетащите кнопку на свою страницу Xaml. Вы можете ссылаться на этот 2 пути x: name и имя. Все XMLNS = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"и XMLNS: х = "http://schemas.microsoft.com/winfx/2006/xaml" - это ссылки на несколько пространств имен. Поскольку XAML держит управления пространства имен (не 100% от этого), и презентации держит FrameworkElement И класс Кнопки имеет рисунок наследования:
Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement,
IInputElement, ISupportInitialize, IHaveResources
Так как можно было бы ожидать все, что наследует от FrameworkElement, будет иметь доступ ко всем его публичным атрибутам. поэтому в случае Button он получает свой атрибут Name из FrameworkElement, на самой вершине дерева иерархии. Итак, вы можете сказать x: Имя или Имя и оба они будут обращаться к устройству-получателю/Элементу FrameworkElement.
MSDN Reference
WPF определяет атрибут CLR, который потребляемые процессоры XAML, чтобы сопоставить несколько пространств имен CLR для одного пространства имен XML. Атрибут XmlnsDefinitionAttribute размещен на уровне сборки в исходном коде, который создает сборку. Исходный код сборки WPF использует этот атрибут для сопоставления различных общих пространств имен, таких как System.Windows и System.Windows.Controls, с пространством имен http://schemas.microsoft.com/winfx/2006/xaml/presentation.
Так атрибуты сборки будет выглядеть примерно так:
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' все время работает нормально. Мне просто пришлось изменить его на «Name», иначе я не мог бы ссылаться на элемент управления в моем .xaml.cs-коде, поэтому я собираюсь предположить, что это уже не так, что он работает нормально все время. – Ortund