FrameworkPropertyMetadata.AffectsMeasure Propriedade

Definição

Recebe ou define um valor que indica se uma propriedade de dependência pode afetar potencialmente a passagem de medida durante as operações do motor de layout.

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

Valor de Propriedade

true se a propriedade de dependência sobre a qual estes metadados existem afetar potencialmente a passagem da medida; caso contrário, false. A predefinição é false.

Exceções

Os metadados já foram aplicados a uma operação de propriedade de dependência, pelo que os metadados ficam selados e as propriedades dos metadados não podem ser definidas.

Exemplos

O exemplo seguinte obtém os metadados predefinidos de vários campos de propriedades de dependência, consulta o valor de várias FrameworkPropertyMetadata propriedades neles e utiliza a informação para preencher uma tabela e implementar um "navegador de metadados".

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")

Observações

FrameworkElement e FrameworkContentElement incluir uma implementação de OnPropertyChanged que monitorize as alterações de valor efetivo de todas as propriedades de dependência que existem num elemento. Como parte dessa lógica, propriedades de dependência que alteram o valor efetivo e têm metadados definidos AffectsMeasure para true iniciarão um pedido diferido para invalidar os visuais desse elemento. Como esta implementação WPF ao nível da framework já está implementada, normalmente não é necessário procurar propriedades de dependência com AffectsMeasure a menos que esteja a substituir ou modificar substancialmente o comportamento WPF layout ao nível da framework.

Implementações personalizadas OnPropertyChanged podem optar por ter um comportamento semelhante para alterações de propriedades de dependência onde AffectsMeasure é true.

As propriedades nas classes derivadas de PropertyMetadata são tipicamente definidas no modelo de objetos como leitura-escrita. Isto serve para que possam ser ajustados após a inicialização da instância. No entanto, depois de os metadados serem consumidos como parte de uma chamada a Register, AddOwner, ou OverrideMetadata, o sistema de propriedades selará essa instância de metadados e as propriedades que transmitem as especificidades dos metadados são agora consideradas imutáveis. Tentar definir esta propriedade depois IsSealed de estar true nesta instância de metadados irá gerar uma exceção.

Utilização de Texto XAML

Os membros desta classe normalmente não são usados em XAML.

Aplica-se a

Ver também