Freezable.GetCurrentValueAsFrozenCore(Freezable) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Powoduje, że bieżące wystąpienie jest zamrożonym klonem określonego Freezableelementu . Jeśli obiekt ma animowane właściwości zależności, zostaną skopiowane bieżące animowane wartości.
protected:
virtual void GetCurrentValueAsFrozenCore(System::Windows::Freezable ^ sourceFreezable);
protected virtual void GetCurrentValueAsFrozenCore (System.Windows.Freezable sourceFreezable);
abstract member GetCurrentValueAsFrozenCore : System.Windows.Freezable -> unit
override this.GetCurrentValueAsFrozenCore : System.Windows.Freezable -> unit
Protected Overridable Sub GetCurrentValueAsFrozenCore (sourceFreezable As Freezable)
Parametry
Uwagi
Ta metoda jest wywoływana przez metodę GetCurrentValueAsFrozen i nie powinna być wywoływana bezpośrednio z kodu, z wyjątkiem wywoływania implementacji podstawowej podczas zastępowania tej metody. Aby utworzyć zamrożoną kopię bieżącego obiektu, wywołaj metodę GetCurrentValueAsFrozen zamiast bezpośrednio wywołać tę metodę.
Uwagi dotyczące dziedziczenia
Jeśli pochodzisz z Freezableklasy , może być konieczne zastąpienie tej metody. Przyczyny zastąpienia obejmują następujące kwestie: — Klasa pochodna zawiera dane, które nie są uwidaczniane za pośrednictwem właściwości zależności.
- Klasa pochodna musi wykonać dodatkową pracę inicjalizacyjną, której nie można wykonać, po prostu przesłaniając CreateInstanceCore()element . Dotyczy to na przykład, jeśli klasa pochodna implementuje ISupportInitializewartość .
Klasy, które przechowują wszystkie swoje dane we właściwościach zależności i które nie muszą wykonywać dodatkowych zadań inicjowania, nie muszą zastępować GetCurrentValueAsFrozenCore(Freezable)elementu .
Ważne jest, aby wszystkie implementacje wywoływać podstawową implementację tej metody. Implementacje powinny wykonywać tylko zadania, które nie są wykonywane przez domyślną implementację. Domyślna implementacja tworzy nową Freezable metodę przy użyciu CreateInstance() metody i tworzy głębokie kopie niezamrożonych i płytkich kopii wszystkich innych zapisywalnych, lokalnie ustawionych właściwości. Jeśli obiekt ma właściwości zależności powiązane z danymi, powiązania danych są kopiowane, ale mogą już nie zostać rozwiązane; Aby uzyskać więcej informacji na temat klonowania obiektów powiązanych z danymi, zobacz Omówienie obiektów z możliwością zamrażania. Jeśli obiekt ma animowane właściwości zależności, bieżąca animowana wartość tych właściwości zostanie skopiowana, ale animacje nie są.
Właściwości zależności tylko do odczytu w obiekcie Freezable nie są kopiowane przez tę domyślną implementację.
Jeśli zastąpisz tę metodę, musisz wywołać implementację podstawową.
Wartości nie są konieczne Freeze() , ponieważ są kopiowane. Wynik jest zamrożony przed GetAsFrozen() zwróceniem.