x: Nome e Nome estão referenciando diferentes espaços para nome.
x: name é uma referência ao espaço para nome x definido por padrão na parte superior do arquivo Xaml.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Apenas dizendo que Name usa o padrão abaixo do namespace.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x: Name está dizendo, use o namespace que possui o x alias. x é o padrão e a maioria das pessoas o deixa, mas você pode alterá-lo para o que quiser
xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"
então sua referência seria foo: name
Definir e usar namespaces no WPF
OK, vamos olhar para isso de uma maneira diferente. Digamos que você arraste e solte um botão na sua página Xaml. Você pode fazer referência a essas 2 maneiras x: nome e nome . Todos os xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" e
xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" são referências a vários espaços para nome . Como o xaml mantém o namespace Control (não 100%) e a apresentação mantém o FrameworkElement AND a classe Button possui um padrão de herança de:
Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement,
IInputElement, ISupportInitialize, IHaveResources
Portanto, como seria de esperar, qualquer coisa herdada do FrameworkElement teria acesso a todos os seus atributos públicos. portanto, no caso de Button, ele obtém seu atributo Name de FrameworkElement, no topo da árvore da hierarquia. Então você pode dizer x: Name ou Name e os dois acessarão o getter / setter a partir do FrameworkElement.
Referência do MSDN
O WPF define um atributo CLR que é consumido pelos processadores XAML para mapear vários espaços para nome CLR em um único espaço para nome XML. O atributo XmlnsDefinitionAttribute é colocado no nível do assembly no código-fonte que produz o assembly. O código-fonte do assembly WPF usa esse atributo para mapear os vários namespaces comuns, como System.Windows e System.Windows.Controls, para o http://schemas.microsoft.com/winfx/2006/xaml/presentation namespace.
Portanto, os atributos da montagem serão parecidos com:
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
o tempo todo funciona bem. Eu apenas tive que alterá-lo para oName
contrário, não pude referenciar o controle no meu código .xaml.cs, portanto, assumirei que não é mais o caso de funcionar bem o tempo todo.