DependencyProperty.ReadOnly Propriedade
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.
Obtém um valor que indica se a propriedade de dependência identificada por essa instância DependencyProperty é uma propriedade de dependência somente leitura.
public:
property bool ReadOnly { bool get(); };
public bool ReadOnly { get; }
member this.ReadOnly : bool
Public ReadOnly Property ReadOnly As Boolean
Valor da propriedade
true
se a propriedade de dependência for somente leitura; caso contrário, false
.
Exemplos
O exemplo a seguir obtém os metadados padrão e as propriedades do identificador de propriedade de dependência de vários campos de propriedade de dependência e usa as informações para preencher uma tabela para implementar 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")
Comentários
As propriedades de dependência somente leitura são registradas no sistema de propriedades chamando o RegisterReadOnly método em vez do Register método. As propriedades anexadas também podem ser registradas como somente leitura; veja RegisterAttachedReadOnly.
As propriedades de dependência somente leitura exigem um DependencyPropertyKey identificador em vez de um DependencyProperty identificador para executar operações de metadados, como substituir os metadados ou definir o valor. Se você obteve uma coleção de identificadores por meio de DependencyProperty uma chamada ou GetLocalValueEnumerator 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 um parâmetro de entrada, para verificar se a propriedade de dependência que o identificador representa não é somente leitura. Se o valor estiver ReadOnly true
em uma propriedade de dependência, não haverá nenhuma maneira programática de obter uma referência ao DependencyPropertyKey identificador dessa propriedade de dependência, dos metadados ou do DependencyProperty identificador; o identificador deve estar disponível como um campo estático para chamar SetValue(DependencyPropertyKey, Object) uma propriedade de dependência somente leitura.
Ao criar uma propriedade de dependência personalizada e registrá-la como somente leitura, você deve definir apenas um acessador get para a propriedade de wrapper CLR. Caso contrário, sua classe terá um modelo de objeto confuso para o wrapper de propriedade em comparação com o acesso à propriedade de dependência de suporte. Para obter detalhes, consulte propriedades de dependência personalizadas ou propriedades de dependência somente leitura.