Пример #1
0
        /// <summary>
        ///     Semantically equivilent to Freezable.Clone().Freeze() except that
        ///     GetAsFrozen avoids copying any portions of the Freezable graph
        ///     which are already frozen.
        /// </summary>
        public static Freezable GetAsFrozen(Freezable freezable)
        {
            if (freezable == null)
            {
                return(null);
            }

            return(freezable.GetAsFrozen());
        }
Пример #2
0
        /// <summary>
        ///     Stores a frozen copy of defaultValue
        /// </summary>
        internal FreezableDefaultValueFactory(Freezable defaultValue)
        {
            Debug.Assert(defaultValue != null,
                         "Null can not be made mutable.  Do not use FreezableDefaultValueFactory.");
            Debug.Assert(defaultValue.CanFreeze,
                         "The defaultValue prototype must be freezable.");

            _defaultValuePrototype = defaultValue.GetAsFrozen();
        }
Пример #3
0
        object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            Freezable fvalue = value as Freezable;

            if (fvalue == null)
            {
                return(fvalue);
            }
            return(fvalue.CanFreeze ? fvalue.Clone() : fvalue.GetAsFrozen());
        }
Пример #4
0
        /// <summary>
        /// If freezable is already frozen, it returns freezable
        /// If freezable is not frozen, it returns a copy that is frozen if possible
        /// </summary>
        internal static Freezable GetAsFrozenIfPossible(Freezable freezable)
        {
            if (freezable == null)
            {
                return(null);
            }

            if (freezable.CanFreeze)
            {
                freezable = freezable.GetAsFrozen();
            }

            return(freezable);
        }