DependencyProperty.ReadOnly Propriedade
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.
Obtém um valor que indica se a propriedade de dependência identificada por esta DependencyProperty instância é uma propriedade de dependência de apenas leitura.
public:
property bool ReadOnly { bool get(); };
public bool ReadOnly { get; }
member this.ReadOnly : bool
Public ReadOnly Property ReadOnly As Boolean
Valor de Propriedade
true se a propriedade de dependência for de apenas leitura; caso contrário, false.
Exemplos
O exemplo seguinte obtém os metadados predefinidos e as propriedades identificadoras de propriedade de dependência a partir de vários campos de propriedades de dependência, e utiliza a informação para preencher uma tabela que implementa um "navegador de metadados".
pm = dp.GetMetadata(dp.OwnerType);
MetadataClass.Text = pm.GetType().Name;
TypeofPropertyValue.Text = dp.PropertyType.Name;
DefaultPropertyValue.Text = (pm.DefaultValue!=null) ? pm.DefaultValue.ToString() : "null";
HasCoerceValue.Text = (pm.CoerceValueCallback == null) ? "No" : pm.CoerceValueCallback.Method.Name;
HasPropertyChanged.Text = (pm.PropertyChangedCallback == null) ? "No" : pm.PropertyChangedCallback.Method.Name;
ReadOnly.Text = (dp.ReadOnly) ? "Yes" : "No";
pm = dp.GetMetadata(dp.OwnerType)
MetadataClass.Text = pm.GetType().Name
TypeofPropertyValue.Text = dp.PropertyType.Name
DefaultPropertyValue.Text = If((pm.DefaultValue IsNot Nothing), pm.DefaultValue.ToString(), "null")
HasCoerceValue.Text = If((pm.CoerceValueCallback Is Nothing), "No", pm.CoerceValueCallback.Method.Name)
HasPropertyChanged.Text = If((pm.PropertyChangedCallback Is Nothing), "No", pm.PropertyChangedCallback.Method.Name)
[ReadOnly].Text = If((dp.ReadOnly), "Yes", "No")
Observações
As propriedades de dependência apenas de leitura são registadas dentro do sistema de propriedades ao chamar o RegisterReadOnly método em vez do próprio Register método. Propriedades anexas também podem ser registadas como apenas leitura; ver RegisterAttachedReadOnly.
As propriedades de dependência apenas de leitura requerem um DependencyPropertyKey identificador em vez de um DependencyProperty identificador para realizar operações de metadados, como sobrepor os metadados ou definir o valor. Se obteve uma coleção de DependencyProperty identificadores através de uma chamada para GetLocalValueEnumerator ou outra API que expõe identificadores, verifique o ReadOnly valor antes de tentar chamar SetValue ou OverrideMetadata usar esse identificador de propriedade de dependência como parâmetro de entrada, para verificar se a propriedade de dependência que o identificador representa não é apenas de leitura. Se o valor de ReadOnly estiver true numa propriedade de dependência, não existe forma programática de obter uma referência ao DependencyPropertyKey identificador dessa propriedade de dependência, seja a partir dos metadados ou do DependencyProperty identificador; o identificador deve estar disponível como um campo estático para ser chamado SetValue(DependencyPropertyKey, Object) contra uma propriedade de dependência apenas de leitura.
Quando crias uma propriedade de dependência personalizada e a registas como apenas leitura, deves definir apenas um acessório get para a propriedade wrapper CLR. Caso contrário, a sua classe terá um modelo de objeto confuso para o wrapper de propriedades em comparação com o acesso à propriedade de dependência de apoio. Para detalhes, consulte Propriedades de Dependência Personalizadas ou Propriedades de DependênciaRead-Only.