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
Значение свойства
Значение 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 для этого случая, понятного подсистеме привязки. Дополнительные сведения см. в статье Подробно о привязке данных.