コード例 #1
0
        /// <summary>
        /// Creates a new <see cref="StoryboardTarget"/> instance from the specified target definition.
        /// </summary>
        /// <param name="targetDefinition">The storyboard target definition to instantiate.</param>
        /// <returns>The <see cref="StoryboardTarget"/> instance that was created.</returns>
        private StoryboardTarget InstantiateStoryboardTarget(UvssStoryboardTarget targetDefinition)
        {
            var target = new StoryboardTarget(targetDefinition.Selector);

            foreach (var animationDefinition in targetDefinition.Animations)
            {
                var animatedPropertyName = animationDefinition.AnimatedProperty;
                var animatedPropertyType = ResolvePropertyTypeFromFilter(Ultraviolet, targetDefinition.Filter, ref animatedPropertyName);

                var navigationExpression    = default(NavigationExpression?);
                var navigationExpressionDef = animationDefinition.NavigationExpression;
                if (navigationExpressionDef != null)
                {
                    animatedPropertyType = ResolvePropertyTypeFromFilter(Ultraviolet,
                                                                         new[] { navigationExpressionDef.NavigationPropertyType }, ref animatedPropertyName);

                    navigationExpression = NavigationExpression.FromUvssNavigationExpression(Ultraviolet, navigationExpressionDef);
                }

                var animationKey = new StoryboardTargetAnimationKey(new DependencyName(animatedPropertyName), navigationExpression);
                var animation    = InstantiateStoryboardAnimation(animationDefinition, animatedPropertyType);
                if (animation != null)
                {
                    target.Animations.Add(animationKey, animation);
                }
            }

            return(target);
        }
コード例 #2
0
        /// <summary>
        /// Adds the specified rule set to the style prioritizer.
        /// </summary>
        private void AddRuleSetToPrioritizer(UIElement element, UvssSelector selector, UvssRuleSet ruleSet, Int32 index)
        {
            if (!selector.MatchesElement(element))
            {
                return;
            }

            var navexp = NavigationExpression.FromUvssNavigationExpression(Ultraviolet, selector.NavigationExpression);

            foreach (var rule in ruleSet.Rules)
            {
                prioritizer.Add(Ultraviolet, selector, navexp, rule, index);
            }

            foreach (var trigger in ruleSet.Triggers)
            {
                prioritizer.Add(Ultraviolet, selector, navexp, trigger, index);
            }
        }