DependencyProperty.ReadOnly Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
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.