private object GetSetterValue(DependencyProperty property) { var setter = Setters.OfType <Setter>().FirstOrDefault(s => s.Property == property); if (setter == null && BasedOn != null) { setter = BasedOn.Setters.OfType <Setter>().FirstOrDefault(s => s.Property == property); } return(setter != null ? setter.Value : null); }
internal void SetActive(bool active) { if (Element == null) { return; } if (_isInitializing) { afterInit = () => SetActive(active); return; } if (Storyboard != null && lastState != active) { if (active) { var state = storyboardStateInvalidated ? Storyboard.GetCurrentState(Element) : System.Windows.Media.Animation.ClockState.Stopped; //TimeSpan ? location = !storyboardStateInvalidated ? null : Storyboard.GetCurrentTime(Element); if (state == System.Windows.Media.Animation.ClockState.Stopped) { Storyboard.Begin(Element, true); } } else { if (storyboardStateInvalidated) { //Storyboard.Seek(TimeSpan.Zero); Storyboard.Stop(Element); } } } if (active) { foreach (var setter in Setters.OfType <Setter>()) { DependencyProperty property = setter.Property; object value = setter.Value; string targetName = setter.TargetName; var target = this.Element.FindName(targetName) as DependencyObject; target?.SetValue(property, value); } } lastState = active; }