что даёт дописывание x: к атрибуту в xaml

В нескольких примерах встречал запись атрибутов графического элемента c и без дописывания x:, например, применение атрибута Name к кнопке:

x:Name="button"
Name="button" 

Обращения к этой кнопке не изменилась, да и работа с ним в коде тоже (правда может и не всё использовалось). В чём же разница? Зачем и когда нужно дописывать к атрибутам x: ?

В XAML есть только одно имя x:Name. Структура, такая как WPF, может при необходимости сопоставить один из ее свойств с XAML x:Name, используя RuntimeNamePropertyAttribute в классе, который обозначает одно из свойств классов как отображение атрибута x: Name XAML.

Причина этого заключалась в том, чтобы позволить фреймворкам, которые уже имеют концепцию "Имя" во время выполнения, например WPF. Например, в WPF FrameworkElement вводит свойство Name.

В общем, классу не нужно сохранять имя для x:Name которое можно использовать. Все x:Name означает, что XAML генерирует поле для хранения значения в коде за классом. То, что среда выполнения делает с этим сопоставлением, зависит от структуры.

Итак, почему есть два способа сделать одно и то же? Простой ответ заключается в том, что на одно свойство отображаются два понятия. WPF хочет, чтобы имя элемента сохранялось во время выполнения (которое можно использовать через Bind, между прочим), и XAML должен знать, какие элементы вы хотите получить по полям в классе за классом. WPF связывает эти два вместе, отмечая свойство Name как псевдоним x: Name.

источник: http://qaru.site/questions/15293/in-wpf-what-are-the-differences-between-the-xname-and-name-attributes

спасибо за разъяснение!