Почему не работает установка x: Name для элементов Window.Resources - PullRequest
4 голосов
/ 03 сентября 2010

Мне просто любопытно, почему, когда я получаю доступ к большинству элементов управления через x:Name, для ресурсов, которые я делаю так, используя x:Key +, я не могу получить к нему доступ из кода (может использовать this.Resources["keyName"])

Ответы [ 2 ]

5 голосов
/ 03 сентября 2010

• x: Key: устанавливает уникальный ключ для каждого ресурса в ResourceDictionary (или аналогичных концепциях словаря в других платформах). x: Key, вероятно, будет составлять 90% от x: использования, которое вы увидите в разметке типичного приложения WPF.

• x: Name: указывает имя объекта времени выполнения для экземпляра, который существует в коде времени выполнения после обработки элемента объекта. Как правило, вы часто будете использовать определенное WPF эквивалентное свойство для x: Name. Такие свойства специально отображаются на базовое свойство CLR и, таким образом, более удобны для прикладного программирования, где вы часто используете код времени выполнения для поиска именованных элементов из инициализированного XAML. Наиболее распространенным таким свойством является FrameworkElement.Name. Вы можете по-прежнему использовать x: Name, если эквивалентное свойство Name уровня WPF не поддерживается в конкретном типе. Это происходит в определенных сценариях анимации.

по этой причине вы должны использовать ключ для ресурсов

Мор http://msdn.microsoft.com/en-us/library/ms752059.aspx

3 голосов
/ 03 сентября 2010

Вы можете получить доступ к ресурсам на любом FrameworkElement , если элемент содержит какие-либо ресурсы . Если определено в вашей разметке, оно должно иметь x:Key и не может иметь x:Name.

Если кнопка, например, содержит ресурс, вы должны получить к нему доступ из коллекции Resources.

var resource = button.Resources["myKey"];

Если вы хотите найти ресурс из объекта, его родителей или приложения, используйте FindResource().

var resource = this.FindResource("myKey");

Я не понимаю вашего замешательства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...