PropertyMetadata.Merge(PropertyMetadata, DependencyProperty) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Mescla esses metadados com os metadados de 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 de base a mesclar com valores dessa instância.
A propriedade de dependência à qual estes metadados estão sendo aplicados.
Exemplos
O exemplo a seguir implementa uma mesclagem 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 != 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;
}
}
}
Comentários
Esse método é usado internamente quando os metadados estão sendo substituídos (OverrideMetadata método).
Notas aos Herdeiros
As implementações de classe das PropertyMetadata quais derivam devem substituir esse método para considerar as propriedades de metadados que eles adicionaram em suas implementações. Por exemplo, sua implementação pode ter adicionado um novo valor de enumeração sinalizador e, em seguida, a Merge(PropertyMetadata, DependencyProperty) implementação deve ser capaz de combinar esses sinalizadores corretamente.
Sempre chame a implementação base antes do código de implementação, pois a implementação base cuida da mesclagem de todas as propriedades já definidas no PropertyMetadata tipo.
O comportamento exato da mesclagem cabe a você. Você pode optar por ter valores combinados, reverter para o valor base se os metadados derivados forem deixados no padrão ou muitos outros comportamentos com base nos tipos de propriedades que você adicionou à classe de metadados específica e seus significados.