FrameworkPropertyMetadata.AffectsMeasure Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает значение, указывающее, может ли свойство зависимостей влиять на передачу измерения во время операций обработчика макета.
public:
property bool AffectsMeasure { bool get(); void set(bool value); };
public bool AffectsMeasure { get; set; }
member this.AffectsMeasure : bool with get, set
Public Property AffectsMeasure As Boolean
Значение свойства
Значение true
, если свойство зависимостей, в котором существуют эти метаданные, может влиять на передачу измерения; в противном случае — значение false
. Значение по умолчанию — false
.
Исключения
Метаданные уже применены к операции свойства зависимостей. Поэтому метаданные запечатаны, а их свойства нельзя задать.
Примеры
Следующий пример получает метаданные по умолчанию из различных полей свойств зависимостей, запрашивает значения различных FrameworkPropertyMetadata свойств и использует эти сведения для заполнения таблицы для реализации "браузера метаданных".
pm = dp.GetMetadata(dp.OwnerType);
pm = dp.GetMetadata(dp.OwnerType)
FrameworkPropertyMetadata fpm = pm as FrameworkPropertyMetadata;
if (fpm!=null) {
AffectsArrange.Text = (fpm.AffectsArrange) ? "Yes" : "No";
AffectsMeasure.Text = (fpm.AffectsMeasure) ? "Yes" : "No";
AffectsRender.Text = (fpm.AffectsRender) ? "Yes" : "No";
Inherits.Text = (fpm.Inherits) ? "Yes" : "No";
IsDataBindingAllowed.Text = (fpm.IsDataBindingAllowed) ? "Yes" : "No";
BindsTwoWayByDefault.Text = (fpm.BindsTwoWayByDefault) ? "Yes" : "No";
}
Dim fpm As FrameworkPropertyMetadata = TryCast(pm, FrameworkPropertyMetadata)
If fpm IsNot Nothing Then
AffectsArrange.Text = If((fpm.AffectsArrange), "Yes", "No")
AffectsMeasure.Text = If((fpm.AffectsMeasure), "Yes", "No")
AffectsRender.Text = If((fpm.AffectsRender), "Yes", "No")
[Inherits].Text = If((fpm.Inherits), "Yes", "No")
IsDataBindingAllowed.Text = If((fpm.IsDataBindingAllowed), "Yes", "No")
BindsTwoWayByDefault.Text = If((fpm.BindsTwoWayByDefault), "Yes", "No")
Комментарии
FrameworkElement и FrameworkContentElement включают реализацию , которая отслеживает изменения действующих значений OnPropertyChanged для всех свойств зависимостей, существующих в элементе. В рамках этой логики свойства зависимостей, изменяющие действующее значение и имеющие метаданные с заданным AffectsMeasure значением true
, инициируют отложенный запрос, чтобы сделать визуальные элементы недействительными для этого элемента. Так как эта реализация на уровне платформы WPF уже существует, обычно не нужно искать свойства зависимостей с AffectsMeasure , если вы не заменяете или не изменяете поведение макета на уровне платформы WPF.
Пользовательские OnPropertyChanged реализации могут иметь аналогичное поведение для изменений свойств зависимостей, где AffectsMeasure имеет значение true
.
Свойства производных PropertyMetadata классов обычно определяются в объектной модели как чтение и запись. Это позволяет настроить их после инициализации экземпляра. Однако после использования метаданных в рамках вызова Register, AddOwnerили OverrideMetadataсистема свойств запечатывает этот экземпляр метаданных и свойства, которые передают особенности метаданных, теперь считаются неизменяемыми. Попытка задать это свойство после IsSealed того, как находится true
в этом экземпляре метаданных, вызовет исключение.
Использование текста XAML
Члены этого класса обычно не используются в XAML.