Freezable クラス


変更可能な状態と読み取り専用 (固定) の状態を持つオブジェクトを定義します。Defines an object that has a modifiable state and a read-only (frozen) state. Freezable から派生するクラスは、詳細な変更通知を提供し、変更不可にすることが可能で、自身のクローンを作成できます。Classes that derive from Freezable provide detailed change notification, can be made immutable, and can clone themselves.

public ref class Freezable abstract : System::Windows::DependencyObject
public abstract class Freezable : System.Windows.DependencyObject
type Freezable = class
    inherit DependencyObject
Public MustInherit Class Freezable
Inherits DependencyObject


Freezable クラスは、変更またはコピーに負荷のかかるオブジェクトを使用する場合に、アプリケーションのパフォーマンスを向上させるのに役立つ特別な機能を提供します。The Freezable class provides special features that can help improve application performance when using objects that are expensive to modify or copy. Freezable オブジェクトの例を次に示します。Examples of Freezable objects include the following:

Freezable からの派生Deriving From Freezable

Freezable から派生するクラスでは、次の機能が得られます。A class that derives from Freezable gains the following features:

  • 特別な状態: 読み取り専用 (固定) 状態と書き込み可能な状態。Special states: a read-only (frozen) state and a writable state.

  • スレッドセーフ: 固定された Freezable オブジェクトは、スレッド間で共有できます。Thread safety: a frozen Freezable object can be shared across threads.

  • 詳細な変更通知: 他の DependencyObject オブジェクトとは異なり、Freezable オブジェクトは、サブプロパティ値が変更されたときに変更通知を提供します。Detailed change notification: Unlike other DependencyObject objects, a Freezable object provides change notifications when sub-property values change.

  • 簡単な複製: Freezable クラスには、ディープクローンを生成するいくつかのメソッドが既に実装されています。Easy cloning: the Freezable class has already implemented several methods that produce deep clones.

独自の Freezable オブジェクトの使用と作成の詳細については、「 Freezable オブジェクトの概要」を参照してください。For information on using and creating your own Freezable objects, see Freezable Objects Overview.



Freezable 派生クラスの新しいインスタンスを初期化します。Initializes a new instance of a Freezable derived class.



オブジェクトを変更不可能にできるかどうかを示す値を取得します。Gets a value that indicates whether the object can be made unmodifiable.


このインスタンスの CLRCLR 型をラップする DependencyObjectType を取得します。Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(継承元 DependencyObject)

この Dispatcher が関連付けられている DispatcherObject を取得します。Gets the Dispatcher this DispatcherObject is associated with.

(継承元 DispatcherObject)

オブジェクトが変更可能かどうかを示す値を取得します。Gets a value that indicates whether the object is currently modifiable.


このインスタンスが現在シールされている (読み取り専用である) かどうかを示す値を取得します。Gets a value that indicates whether this instance is currently sealed (read-only).

(継承元 DependencyObject)



呼び出し元のスレッドがこの DispatcherObject にアクセスできるかどうかを確認します。Determines whether the calling thread has access to this DispatcherObject.

(継承元 DispatcherObject)

プロパティのローカル値をクリアします。Clears the local value of a property. クリアするプロパティは DependencyProperty 識別子で指定されます。The property to be cleared is specified by a DependencyProperty identifier.

(継承元 DependencyObject)

読み取り専用プロパティのローカル値を消去します。Clears the local value of a read-only property. 消去するプロパティは、 DependencyPropertyKeyで指定します。The property to be cleared is specified by a DependencyPropertyKey.

(継承元 DependencyObject)

Freezable の変更可能な複製を作成し、オブジェクトの値の詳細コピーを作成します。Creates a modifiable clone of the Freezable, making deep copies of the object's values. このメソッドは、オブジェクトの依存関係プロパティをコピーするときに式をコピーしますが (コピーされた式は解決されなくなる場合があります)、アニメーションやその現在の値はコピーしません。When copying the object's dependency properties, this method copies expressions (which might no longer resolve) but not animations or their current values.


基本 (アニメーション化されていない) プロパティ値を使用して、インスタンスを、指定した Freezable の複製 (詳細コピー) にします。Makes the instance a clone (deep copy) of the specified Freezable using base (non-animated) property values.


Freezable の現在の値を使用して、変更可能な複製 (詳細コピー) を作成します。Creates a modifiable clone (deep copy) of the Freezable using its current values.


現在のプロパティ値を使用して、インスタンスを、指定した Freezable の変更可能な複製 (詳細コピー) にします。Makes the instance a modifiable clone (deep copy) of the specified Freezable using current property values.


指定した依存関係プロパティの値を強制します。Coerces the value of the specified dependency property. これは、呼び出し元の DependencyObject の依存関係プロパティのプロパティ メタデータで指定されている CoerceValueCallback 関数を呼び出すことによって実現されます。This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(継承元 DependencyObject)

Freezable クラスの新しいインスタンスを初期化します。Initializes a new instance of the Freezable class.


派生クラスで実装された場合、Freezable 派生クラスの新しいインスタンスを作成します。When implemented in a derived class, creates a new instance of the Freezable derived class.


指定した DependencyObject が現在の DependencyObject と等しいかどうかを判断します。Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(継承元 DependencyObject)

現在のオブジェクトを変更不可能にし、その IsFrozen プロパティを true に設定します。Makes the current object unmodifiable and sets its IsFrozen property to true.

Freeze(Freezable, Boolean)

isChecking パラメーターが true の場合、このメソッドは、指定した Freezable を変更不可能な状態にできるかどうかを示します。If the isChecking parameter is true, this method indicates whether the specified Freezable can be made unmodifiable. isChecking パラメーターが false の場合、このメソッドは、指定した Freezable を変更不可能な状態にすることを試み、操作が成功したかどうかを示します。If the isChecking parameter is false, this method attempts to make the specified Freezable unmodifiable and indicates whether the operation succeeded.


Freezable オブジェクトを変更不可能な状態にするか、変更不可能な状態にできるかどうかをテストします。Makes the Freezable object unmodifiable or tests whether it can be made unmodifiable.


基本プロパティ値 (アニメーション化されていない値) を使用して、Freezable の 固定されたコピーを作成します。Creates a frozen copy of the Freezable, using base (non-animated) property values. コピーが固定されているため、参照によって任意の固定されたサブオブジェクトがコピーされます。Because the copy is frozen, any frozen sub-objects are copied by reference.


基本プロパティ値 (アニメーション化されていない値) を使用して、インスタンスを、指定した Freezable の固定された複製にします。Makes the instance a frozen clone of the specified Freezable using base (non-animated) property values.


現在のプロパティ値を使用して、Freezable の固定されたコピーを作成します。Creates a frozen copy of the Freezable using current property values. コピーが固定されているため、参照によって任意の固定されたサブオブジェクトがコピーされます。Because the copy is frozen, any frozen sub-objects are copied by reference.


現在のインスタンスを、指定した Freezable の固定された複製にします。Makes the current instance a frozen clone of the specified Freezable. オブジェクトに、アニメーション化された依存関係プロパティが存在する場合、現在アニメーション化されている値がコピーされます。If the object has animated dependency properties, their current animated values are copied.


この DependencyObject のハッシュ コードを取得します。Gets a hash code for this DependencyObject.

(継承元 DependencyObject)

どの依存関係プロパティがこの DependencyObject 上にローカルに設定された値を持つかを確認するための、専用の列挙子を作成します。Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(継承元 DependencyObject)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

DependencyObject のこのインスタンスにある依存関係プロパティの現在の有効値を返します。Returns the current effective value of a dependency property on this instance of a DependencyObject.

(継承元 DependencyObject)

指定した依存関係プロパティの有効値を再評価します。Re-evaluates the effective value for the specified dependency property.

(継承元 DependencyObject)

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

現在の Freezable オブジェクトの変更時に呼び出されます。Called when the current Freezable object is modified.

OnFreezablePropertyChanged(DependencyObject, DependencyObject)

設定されたばかりの DependencyObjectType データ メンバーに対して、適切なコンテキスト ポインターが確立されていることを確認します。Ensures that appropriate context pointers are established for a DependencyObjectType data member that has just been set.

OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

このメンバーは、Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) インフラストラクチャをサポートしますが、独自に作成したコードから直接使用するためのものではありません。This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.


OnPropertyChanged(DependencyPropertyChangedEventArgs)DependencyObject 実装をオーバーライドして、さらに型 Freezable の変化する依存関係プロパティへの応答として任意の Changed ハンドラーも呼び出します。Overrides the DependencyObject implementation of OnPropertyChanged(DependencyPropertyChangedEventArgs) to also invoke any Changed handlers in response to a changing dependency property of type Freezable.


ローカルの依存関係プロパティの値を返します (存在する場合)。Returns the local value of a dependency property, if it exists.

(継承元 DependencyObject)

Freezable が有効なスレッドからアクセスされていることを確認します。Ensures that the Freezable is being accessed from a valid thread. Freezable の継承側は、依存関係プロパティでないデータ メンバーを読み取る任意の API の開始時に、このメソッドを呼び出す必要があります。Inheritors of Freezable must call this method at the beginning of any API that reads data members that are not dependency properties.

SetCurrentValue(DependencyProperty, Object)

依存関係プロパティ値のソースを変更せずにその値を設定します。Sets the value of a dependency property without changing its value source.

(継承元 DependencyObject)
SetValue(DependencyProperty, Object)

依存関係プロパティ識別子を指定して、該当する依存関係プロパティのローカル値を設定します。Sets the local value of a dependency property, specified by its dependency property identifier.

(継承元 DependencyObject)
SetValue(DependencyPropertyKey, Object)

依存関係プロパティの DependencyPropertyKey 識別子で指定した読み取り専用の依存関係プロパティのローカル値を設定します。Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(継承元 DependencyObject)

シリアル化プロセスが、指定された依存関係プロパティの値をシリアル化する必要があるかどうかを示す値を返します。Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(継承元 DependencyObject)

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

呼び出し元のスレッドがこの DispatcherObject にアクセスできるように強制します。Enforces that the calling thread has access to this DispatcherObject.

(継承元 DispatcherObject)

FreezableChanged イベントを発生させ、その OnChanged() メソッドを呼び出します。Raises the Changed event for the Freezable and invokes its OnChanged() method. Freezable から派生するクラスは、依存関係プロパティとして格納されていないクラス メンバーを変更するすべての API の終了時に、このメソッドを呼び出す必要があります。Classes that derive from Freezable should call this method at the end of any API that modifies class members that are not stored as dependency properties.


Freezable が固定されておらず、有効なスレッド コンテキストからアクセスされていることを確認します。Verifies that the Freezable is not frozen and that it is being accessed from a valid threading context. Freezable の継承側は、依存関係プロパティでないデータ メンバーに書き込む任意の API の開始時に、このメソッドを呼び出す必要があります。Freezable inheritors should call this method at the beginning of any API that writes to data members that are not dependency properties.



Freezable、またはこれに含まれているオブジェクトが変更されると発生します。Occurs when the Freezable or an object it contains is modified.


スレッド セーフ

この型のパブリック static メンバーはすべて、スレッドセーフです。Any public static members of this type are thread safe. インスタンス メンバーについては、スレッド セーフであることの保証はありません。Any instance members are not guaranteed to be thread safe.

IsFrozen プロパティが false場合、Freezable オブジェクトは、そのオブジェクトが作成されたスレッドからのみアクセスできます。When the IsFrozen property is false, a Freezable object can be accessed only from the thread on which it was created. 別のスレッドからアクセスしようとすると、InvalidOperationExceptionがスローされます。Attempting to access it from another thread throws an InvalidOperationException. Invoke メソッドと BeginInvoke メソッドは、適切なスレッドへのマーシャリングをサポートします。The Invoke and BeginInvoke methods provide support for marshaling to the correct thread.

IsFrozen プロパティが true場合、Freezable オブジェクトはフリースレッドになります。When their IsFrozen property is true, Freezable objects are free-threaded. 詳細については、「Freezable オブジェクトの概要」を参照してください。For more information, see Freezable Objects Overview.