/// <summary>Метод обратного вызова после изменения значения свойства.</summary> /// <param name="d">FrameworkElement иначе исключение.</param> /// <param name="e">Параметры изменения</param> private static void ProportionalChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (!(d is FrameworkElement element)) { throw new ArgumentException("Must be a FrameworkElement"); } /// Получение элемента сохраняющего пропорции. SizeChangedElement changedElement = GetSizeChangeElement(element); /// Если элемент не задан, то его создание и сохранение. if (changedElement == null) { SetSizeChangeElement(element, changedElement = new SizeChangedElement(element)); } /// Передача нового значения пропорции. changedElement.SetWidthToHeight((double)e.NewValue); }
private static void SetSizeChangeElement(DependencyObject obj, SizeChangedElement value) { obj.SetValue(SizeChangeElementPropertyKey, value); }
/// <summary>Приватный сеттер AP-свойства SizeChangeElementPropertyKey.</summary> private static void SetSizeChangeElement(FrameworkElement obj, SizeChangedElement value) { obj.SetValue(SizeChangeElementPropertyKey, value); }