DependencyProperty.ReadOnly プロパティ

定義

この DependencyProperty インスタンスによって識別される依存関係プロパティが読み取り専用の依存関係プロパティかどうかを示す値を取得します。

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

プロパティ値

Boolean

依存関係プロパティが読み取り専用の場合は true。それ以外の場合は false

次の例では、さまざまな依存関係プロパティ フィールドから既定のメタデータと依存関係プロパティ識別子のプロパティを取得し、その情報を使用してテーブルにデータを設定し、"メタデータ ブラウザー" を実装します。

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

注釈

読み取り専用の依存関係プロパティは、メソッドではなくメソッドを呼び出 RegisterReadOnly すことによって、プロパティ システム内に Register 登録されます。 添付プロパティは、読み取り専用として登録することもできます。を参照してください RegisterAttachedReadOnly

読み取り専用の依存関係プロパティでは、メタデータの DependencyPropertyKey オーバーライドや値の DependencyProperty 設定などのメタデータ操作を実行するための識別子ではなく、識別子が必要です。 識別子を公開する呼び出しまたは別の API を使用して識別子のDependencyPropertyコレクションをGetLocalValueEnumerator取得した場合は、その依存関係プロパティ識別子を呼び出SetValueそうとするかOverrideMetadata、入力パラメーターとして使用する前に値を確認ReadOnlyして、識別子が表す依存関係プロパティが読み取り専用ではないことを確認します。 値がReadOnlytrue依存関係プロパティにある場合、メタデータまたはDependencyProperty識別子から、その依存関係プロパティの識別子への参照を取得するDependencyPropertyKeyプログラムによる方法はありません。読み取り専用の依存関係プロパティに対して呼び出SetValue(DependencyPropertyKey, Object)すには、識別子を静的フィールドとして使用できる必要があります。

カスタム依存関係プロパティを作成し、読み取り専用として登録する場合は、CLR ラッパー プロパティの get アクセサーのみを定義する必要があります。 そうしないと、バッキング依存関係プロパティへのアクセスと比較して、プロパティ ラッパーのオブジェクト モデルが混乱します。 詳細については、「 カスタム依存関係プロパティ 」または「 読み取り専用の依存関係プロパティ」を参照してください。

適用対象

こちらもご覧ください