Почему изменение свойства зависимости одного элемента управления (кнопки) не влияет на все его экземпляры? - PullRequest
1 голос
/ 10 августа 2011

Это может быть глупым вопросом.

  1. Свойства зависимостей являются статическими по своей природе.
  2. Кнопка (в основном открытый класс) имеет свойства зависимости от множества символов.

Если я использую две кнопки в моем окне, это означает, что разные экземпляры одного и того же класса ... но статическое свойство должно быть только одно.Если я изменяю свойство зависимости одного изменения кнопки, другие тоже должны быть изменены, верно?

Спасибо Аниш

Ответы [ 2 ]

3 голосов
/ 11 августа 2011

DependencyProperty отличается от обычного свойства.Это определение свойства, которое зависит от другого свойства, чтобы получить его значение.Он не должен содержать значение, но вместо этого содержит указатель на другое значение.

Если вы делаете что-то вроде <TextBlock Text="Test" />, вы указываете значение Text DepdencyProperty на строковое значение с надписью «Test»,Если вы делаете <TextBlock Text="{Binding UserName}" />, вы указываете значение на свойство в DataContext TextBlock (обычно это класс) с именем UserName.

Я действительно написал что-то здесь о том, как отличаются свойства DependencyPropertiesиз обычных свойств, если вы заинтересованы

0 голосов
/ 11 августа 2011

Сводится к концепции, это может помочь вам понять это:

  1. Свойства зависимостей подобны словарям, если SetValue используется новая запись с ключом элемента управления и значение, которое вы устанавливаете, создается или значение перезаписывается. Это значение можно посмотреть позже с помощью GetValue.

  2. Только этот словарь является статическим, а CLR-Wrappers - нет, в противном случае экземпляры объектов не могут быть добавлены в качестве ключа.

  3. Смысл наличия свойств зависимости состоит в том, чтобы на самом деле не иметь столько полей в каждом экземпляре элемента управления (как вы упомянули, у Button достаточно много свойств), чтобы значения можно было искать иерархически, в конечном итоге возвращаясь к значению по умолчанию, определенному в определении поля.

Также см., Конечно, статьи по MSDN для более правильного и подробного взгляда на проблему.

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