PropertyMetadata.Merge(PropertyMetadata, DependencyProperty) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Совмещает эти метаданные с основными.
protected:
virtual void Merge(System::Windows::PropertyMetadata ^ baseMetadata, System::Windows::DependencyProperty ^ dp);
protected virtual void Merge (System.Windows.PropertyMetadata baseMetadata, System.Windows.DependencyProperty dp);
abstract member Merge : System.Windows.PropertyMetadata * System.Windows.DependencyProperty -> unit
override this.Merge : System.Windows.PropertyMetadata * System.Windows.DependencyProperty -> unit
Protected Overridable Sub Merge (baseMetadata As PropertyMetadata, dp As DependencyProperty)
Параметры
- baseMetadata
- PropertyMetadata
Основные метаданные, с которыми следует совместить значения экземпляра.
Свойство зависимостей, к которому применяются данные метаданные.
Примеры
В следующем примере реализуется слияние для пользовательского типа метаданных, который добавляет дополнительное свойство в метаданные свойства.
public Boolean SupportsMyFeature
{
get { return _supportsMyFeature; }
set { if (this.IsSealed != true) _supportsMyFeature = value; } //else may want to raise exception
}
protected override void Merge(PropertyMetadata baseMetadata, DependencyProperty dp)
{
base.Merge(baseMetadata, dp);
MyCustomPropertyMetadata mcpm = baseMetadata as MyCustomPropertyMetadata;
if (mcpm != null)
{
if (this.SupportsMyFeature == false)
{//if not set, revert to base
this.SupportsMyFeature = mcpm.SupportsMyFeature;
}
}
}
Комментарии
Этот метод используется внутренне при переопределении метаданных (OverrideMetadata метод).
Примечания для тех, кто наследует этот метод
Реализации классов, производные от PropertyMetadata этого метода, должны переопределять этот метод, чтобы учитывать все свойства метаданных, добавленные в их реализации. Например, реализация могла добавить новое значение пометки перечисления, а Merge(PropertyMetadata, DependencyProperty) затем реализация должна правильно объединить эти флаги.
Всегда вызывайте базовую реализацию до кода реализации, так как базовая реализация отвечает за объединение всех свойств, уже определенных для PropertyMetadata типа.
Точное поведение слияния связано с вами. Вы можете объединить значения, вернуться к базовому значению, если производные метаданные остались по умолчанию или многие другие поведения на основе типов свойств, добавленных в определенный класс метаданных, и их значения.