FrameworkPropertyMetadata.AffectsRender Propriedade

Definição

Obtém ou define um valor que indica se uma propriedade de dependência pode afetar o layout geral de alguma forma que não influencia especificamente a disposição ou medição, mas que exigiria um redesenho.

public:
 property bool AffectsRender { bool get(); void set(bool value); };
public bool AffectsRender { get; set; }
member this.AffectsRender : bool with get, set
Public Property AffectsRender As Boolean

Valor de Propriedade

true se a propriedade de dependência sobre a qual estes metadados existem afetar a renderização; 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 AffectsRender 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 AffectsRender 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 AffectsRender é true.

As propriedades em quaisquer 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