Вы читаете это задом наперед: вы не можете применить прикрепленное свойство к не-DependencyObject
.Однако вы можете определить присоединенное свойство для класса, не производного от DependencyObject
.Обычно статический класс, такой как FocusManager
в WPF.
x:Name
, не является присоединенным свойством: это директива .В обычном случае FrameworkElement
это то же самое, что и FrameworkElement.Name
.В случае пользовательского класса его целью является определение поля с тем же именем (что и должно быть в вашем случае: теперь у вас есть поля Refresh
и Print
, доступные из кода кода).В каждом случае (кроме ResourceDictionary
) он добавляется к текущему XAML-имени .
. Вы можете использовать FindName на вашем Window
, чтобы получитьпривязка команды от ее имени.Если вам действительно нужно вернуть имя из объекта, вы можете использовать следующий фрагмент кода, чтобы получить перечислимый словарь, содержащий каждый именованный элемент в области видимости:
var dictionary = (INameScopeDictionary) NameScope.GetNameScope(yourWindow);