PropertyMetadata.Merge(PropertyMetadata, DependencyProperty) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Funde estes metadados com os metadados base.
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)
Parâmetros
- baseMetadata
- PropertyMetadata
Os metadados base para fundir com os valores desta instância.
A propriedade de dependência à qual estes metadados estão a ser aplicados.
Exemplos
O exemplo seguinte implementa uma fusão para um tipo de metadados personalizado que adiciona uma propriedade adicional aos metadados da propriedade.
public Boolean SupportsMyFeature
{
get { return _supportsMyFeature; }
set { if (!this.IsSealed) _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)
{//if not set, revert to base
this.SupportsMyFeature = mcpm.SupportsMyFeature;
}
}
}
Observações
Este método é usado internamente quando os metadados estão a ser sobrepostos (OverrideMetadata método).
Notas para Herdeiros
As implementações de classe que derivam de PropertyMetadata devem sobrepor este método para ter em conta quaisquer propriedades de metadados que tenham adicionado nas suas implementações. Por exemplo, a sua implementação pode ter adicionado um novo valor de enumeração flagwise, e a Merge(PropertyMetadata, DependencyProperty) implementação deverá então conseguir combinar essas flags corretamente.
Chame sempre a implementação base antes do seu código de implementação, porque a implementação base trata da fusão de todas as propriedades já definidas no PropertyMetadata tipo.
O comportamento exato da fusão depende de ti. Pode optar por ter valores combinados, reverter ao valor base se os metadados derivados ficarem no padrão, ou muitos outros comportamentos baseados nos tipos de propriedades que adicionou à sua classe de metadados particular e aos seus significados.