Подтвердить что ты не робот

Когда следует использовать свойства зависимостей в WPF?

Когда следует использовать свойства зависимостей в WPF?

Они статичны, поэтому мы сохраняем много памяти по сравнению с использованием свойств .NET. Другими преимуществами использования свойств зависимостей над свойствами .NET являются: 1) нет необходимости проверять доступ к потоку 2) запросите содержащий элемент, который будет отображаться и т.д...

Итак, кажется, я ВСЕГДА использую свойства зависимостей в моих проектах, где я использую WPF?

Возможно, для некоторых тривиальных свойств вспомогательных классов здесь и там я мог уйти с .NET свойствами...

4b9b3361

Ответ 1

Зависимость Свойство - это широкая концепция, объясняющая, что может занять пару страниц для записи. Поэтому просто чтобы ответить на ваш вопрос. Свойство Dependency используется там, где

  • Вы знаете, что свойство будет обязательной целью, т. к. вы создаете свой пользовательский элемент управления/пользовательский элемент управления и хотите свойство, которое должно быть привязано к привязке.

  • Вам нужны автоматические уведомления об изменениях свойств (также краткий и валидационный).

  • Мы хотим наследование значений в стилях, темах, родительском или стандартном значении.

  • Нет необходимости создавать свойства на уровне модели или ViewModel в качестве свойств зависимостей большую часть времени, поскольку это не поможет значительно уменьшить память, поскольку большинство свойств, которые мы определяем в модели /VM, имеют значения для каждого экземпляра, поскольку они будут постоянно меняться. Значение свойства Resolving Dependency - это бремя само по себе, поэтому излишняя ненадежность зависимости свойств не рекомендуется.

Спасибо

Ответ 2

Основная причина создания DependencyProperty - это когда вы пишете собственный элемент управления WPF. DependencyProperties может использоваться как источник привязки и целевой объект и может быть анимированным. Свойства всех элементов управления каркасом реализованы как DependencyProperty, поэтому вы можете сделать мощную привязку данных в XAML.

Однако в большинстве случаев, как и в шаблоне MVVM, вам не нужны свойства зависимостей, INotifyPropertyChanged достаточно.

Ответ 3

Основное отличие состоит в том, что значение обычного свойства .NET читается непосредственно из частного члена вашего класса, тогда как значение DependencyProperty динамически разрешается при вызове метода GetValue(), который унаследован от DependencyObject.

Когда вы устанавливаете значение свойства зависимости, оно не сохраняется в поле вашего объекта, а в словаре ключей и значений, предоставляемых базовым классом DependencyObject. Ключ записи - это имя свойства, а значение - это значение, которое вы хотите установить.

Преимущества свойств зависимостей

  • Сокращение объема памяти:
    Это огромная диссипация для хранения поля для каждого свойства, если вы считаете, что более 90% свойств элемента управления пользовательского интерфейса обычно остаются в исходных значениях. Свойства зависимостей решают эти проблемы только путем сохранения модифицированных свойств в экземпляре. Значения по умолчанию сохраняются один раз в пределах свойства зависимостей.
  • Наследование свойств:
    Когда вы получаете доступ к свойству зависимостей, значение разрешается с использованием стратегии разрешения значения. Если локальное значение не задано, свойство зависимостей перемещается по логическому дереву до тех пор, пока не найдет значение. Когда вы устанавливаете FontSize в корневом элементе, он применяется ко всем текстовым блокам ниже, кроме того, что вы переопределяете значение.
  • Уведомление об изменении:
    У свойств зависимостей есть встроенный механизм уведомления об изменениях. Зарегистрировав обратный вызов в метаданных свойств, вы получите уведомление, когда значение свойства было изменено. Это также используется привязкой данных.

проверьте приведенный ниже URL-адрес для получения более подробной информации о магии.

свойства зависимостей в WPF

Ответ 4

enter image description here

Свойство CLR свойства и зависимости

Свойство CLR читается непосредственно из частного члена класса. Методы Get() и Set() класса извлекают и сохраняют значения свойства. Если вы устанавливаете значение свойства Dependency, оно не сохраняется в поле вашего объекта, а в словаре ключей и значений, предоставляемых базовым классом DependencyObject. Ключ записи - это имя свойства, а значение - это значение, которое вы хотите установить.

Преимущества свойства зависимости Меньшее потребление памяти

Свойство Dependency сохраняет свойство только тогда, когда оно изменено или изменено. Следовательно, огромный объем памяти для полей свободен.

Наследование свойств свойства Это означает, что если для свойства не установлено значение, оно вернется в дерево наследования до того, где оно получит значение.

Изменить уведомление и привязки данных Всякий раз, когда свойство изменяет свое значение, оно предоставляет уведомление в Свойстве зависимостей, используя INotifyPropertyChange, а также помогает в привязке данных.

Участие в анимации, стилях и шаблонах Свойство зависимостей может анимировать, устанавливать стили с помощью стилей и даже создавать шаблоны для элемента управления.

Callbacks Всякий раз, когда свойство изменяется, вы можете вызвать обратный вызов.

Ресурсы Вы можете определить ресурс для определения свойства зависимостей в XAML.

Переопределение метаданных Вы можете определить определенное поведение свойства зависимости с помощью PropertyMetaData. Таким образом, переопределение метаданных из производного свойства не потребует от вас переопределения или повторного реализации всего определения свойства.

Ответ 5

Свойства зависимостей используются, когда вы хотите привязать данные в UserControl, и является стандартным методом привязки данных для элементов управления WPF Framework. DP имеют немного лучшую производительность привязки, и все предоставляется вам, когда внутри UserControl реализовано их.

В противном случае вы обычно используете INotifyPropertyChanged для привязки в другом месте, поскольку его проще реализовать в автономных классах и иметь меньше накладных расходов. Что касается ваших исходных предположений:

  • Существует локальный экземпляр вашей переменной, вы определенно не сохраняете никаких накладных расходов над свойством, поскольку существует встроенная логика привязки данных.
  • Они должны быть доступны в основном потоке.

Ответ 6

Возможно, вам стоит еще раз взглянуть на страницу "Свойства зависимостей" в MSDN.

Лично я бы когда-либо создавал DependencyProperty, когда мне действительно нужно. По большей части я использую обычные свойства CLR в типах данных и классах модели представления для привязки к... это абсолютно нормально, если я реализую интерфейс INotifyPropertyChanged.

Итак, для всех моих обычных привязок данных я использую обычные свойства CLR. Я объявляю только Dependency Property, чтобы предоставить некоторые дополнительные функции в UserControl.