Поделиться через


DependencyProperty.UnsetValue Свойство

Определение

Задает статическое значение, которое используется системой свойств, а не null для указания того, что свойство существует, но не имеет его значения, заданного системой свойств или кодом приложения.

public:
 static property Platform::Object ^ UnsetValue { Platform::Object ^ get(); };
static IInspectable UnsetValue();
public static object UnsetValue { get; }
var object = DependencyProperty.unsetValue;
Public Shared ReadOnly Property UnsetValue As Object

Значение свойства

Object

Platform::Object

IInspectable

Значение sentinel для неустановленного значения.

Примеры

В этом примере проверяется наличие существующего локального значения с помощью ReadLocalValue. Если имеется локальное значение, на которое указывает не возвращается UnsetValue, существующее локальное значение удаляется путем вызова ClearValue.

public static bool ClearSetProperty(DependencyObject targetObject, DependencyProperty targetDP)
{
    if (targetObject == null || targetDP == null)
    {
        throw new ArgumentNullException();
    }
    object localValue = targetObject.ReadLocalValue(targetDP);
    if (localValue == DependencyProperty.UnsetValue)
    {
        return false;
    }
    else
    {
        targetObject.ClearValue(targetDP);
        return true;
    }
}

Комментарии

UnsetValue — это значение sentinel, используемое в сценариях, когда система свойств зависимостей не может определить запрошенное значение свойства зависимостей. UnsetValue используется вместо null, так как null является допустимым значением свойства для большинства значений ссылочного типа и часто используется DefaultValue в метаданных для свойства зависимостей.

UnsetValue никогда не возвращается из вызова DependencyObject.GetValue . При вызове DependencyObject.GetValue для свойства зависимостей всегда выполняется одно из следующих условий:

  • Свойство зависимости имеет значение по умолчанию, установленное в метаданных, и это значение возвращается. Это значение может поступать из значения DefaultValue метаданных свойства. Это может быть null.
  • Другое значение было установлено с помощью приоритета значений (например, применен стиль или оценка привязки ), и значение по умолчанию больше не имеет значения. Несмотря на то, что задано специально, это все равно может быть null. Дополнительные сведения о приоритете значений см. в статье Общие сведения о свойствах зависимостей.

DependencyObject.ReadLocalValue возвращает, UnsetValue если запрошенное свойство не задано локально.

Примечание

Не регистрируйте свойство зависимостей со значением UnsetValueпо умолчанию . Это будет запутано для потребителей свойств и будет иметь непредвиденные последствия в системе свойств.

UnsetValue должен быть возвращен из реализации IValueConverter , которая обеспечивает преобразование в привязке данных в свойство зависимости в любом случае, когда преобразователь не может преобразовать исходное значение. Преобразователи не должны создавать исключения в этом случае в IValueConverter.Convert. Они будут отображаться как исключения времени выполнения, которые необходимо добавить для обработки в UnhandledException или еще хуже, будут отображаться пользователям как фактические исключения во время выполнения. Реализации преобразователя должны соответствовать общему шаблону привязки, что любая неудачная привязка ничего не делает и не предоставляет значения, а UnsetValue не null является значением sentinel для этого случая, понятного подсистеме привязки. Дополнительные сведения см. в статье Подробно о привязке данных.

Применяется к

См. также раздел