Condividi tramite


DependencyProperty.ReadOnly Proprietà

Definizione

Ottiene un valore che indica se la proprietà di dipendenza identificata da questa istanza DependencyProperty è una proprietà di dipendenza di sola lettura.

public:
 property bool ReadOnly { bool get(); };
public bool ReadOnly { get; }
member this.ReadOnly : bool
Public ReadOnly Property ReadOnly As Boolean

Valore della proprietà

Boolean

true se la proprietà di dipendenza è di sola lettura, in caso contrario false.

Esempio

Nell'esempio seguente vengono ottenuti i metadati predefiniti e le proprietà dell'identificatore di proprietà di dipendenza da vari campi delle proprietà di dipendenza e vengono utilizzate le informazioni per popolare una tabella per implementare un "browser metadati".

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

Commenti

Le proprietà di dipendenza di sola lettura vengono registrate all'interno del sistema di proprietà chiamando il RegisterReadOnly metodo anziché il Register metodo . Le proprietà associate possono anche essere registrate come di sola lettura; vedere RegisterAttachedReadOnly.

Le proprietà di dipendenza di sola lettura richiedono un DependencyPropertyKey identificatore anziché un DependencyProperty identificatore per eseguire operazioni di metadati, ad esempio l'override dei metadati o l'impostazione del valore. Se è stata ottenuta una raccolta di DependencyProperty identificatori tramite una chiamata a GetLocalValueEnumerator o un'altra API che espone gli identificatori, controllare il ReadOnly valore prima di tentare di chiamare SetValue o OverrideMetadata usare tale identificatore di proprietà di dipendenza come parametro di input, per verificare che la proprietà di dipendenza rappresentata dall'identificatore non sia di sola lettura. Se il valore di è true basato su una proprietà di ReadOnly dipendenza, non esiste un modo programmatico per ottenere un riferimento all'identificatore DependencyPropertyKey della proprietà di dipendenza, dai metadati o dall'identificatore. L'identificatore DependencyProperty deve essere disponibile come campo statico per chiamare SetValue(DependencyPropertyKey, Object) su una proprietà di dipendenza di sola lettura.

Quando si crea una proprietà di dipendenza personalizzata e la si registra come di sola lettura, è necessario definire solo una funzione di accesso get per la proprietà wrapper CLR. In caso contrario, la classe avrà un modello a oggetti confuso per il wrapper della proprietà rispetto all'accesso alla proprietà di dipendenza di backup. Per informazioni dettagliate, vedere Proprietà di dipendenza personalizzate o Proprietà di dipendenza di sola lettura.

Si applica a

Vedi anche