/// <summary>
        /// Clears the triggered value associated with the specified dependency property.
        /// </summary>
        /// <param name="key">A <see cref="DependencyPropertyKey"/> instance which provides access to the read-only
        /// dependency property to clear.</param>
        /// <param name="action">The trigger action to clear from the specified dependency property.</param>
        public void ClearTriggeredValue(DependencyPropertyKey key, SetTriggerAction action)
        {
            Contract.Require(key, nameof(key));
            Contract.Require(action, nameof(action));

            var wrapper = GetDependencyPropertyValue(key.DependencyProperty, key.DependencyProperty.PropertyType);

            wrapper.ClearTriggeredValue(action);
        }
        /// <summary>
        /// Sets the triggered value of the specified dependency property.
        /// </summary>
        /// <param name="key">A <see cref="DependencyPropertyKey"/> instance which provides access to
        /// the read-only dependency property for which to set a value.</param>
        /// <param name="action">The trigger action which will provide the dependency property's value.</param>
        public void SetTriggeredValue(DependencyPropertyKey key, SetTriggerAction action)
        {
            Contract.Require(key, nameof(key));
            Contract.Require(action, nameof(action));

            var dp = key.DependencyProperty;

            var wrapper = GetDependencyPropertyValue(dp, dp.PropertyType);

            wrapper.Trigger(action);
        }
示例#3
0
            /// <inheritdoc/>
            public void ClearTriggeredValue(SetTriggerAction trigger)
            {
                Contract.Require(trigger, nameof(trigger));

                if (triggeredValueSource != trigger)
                {
                    return;
                }

                ClearTriggeredValue();
            }
示例#4
0
            /// <inheritdoc/>
            public void Trigger(SetTriggerAction action)
            {
                Contract.Require(action, nameof(action));

                var oldValue = GetValue();

                triggeredValueSource = action;
                triggeredValue       = action.GetValue <T>();

                UpdateRequiresDigest(oldValue);
            }
            /// <inheritdoc/>
            public void ClearTriggeredValue(SetTriggerAction trigger)
            {
                Contract.Require(trigger, nameof(trigger));

                if (triggeredValueSource != trigger)
                {
                    return;
                }

                ClearTriggeredValue();

                this.useDefaultValue = GetValueSource() == ValueSource.DefaultValue;
            }
        /// <summary>
        /// Clears the triggered value associated with the specified dependency property, if it is currently being provided
        /// by the specified trigger action. Otherwise, nothing happens.
        /// </summary>
        /// <param name="dp">A <see cref="DependencyProperty"/> instance which identifies the dependency property to clear.</param>
        /// <param name="action">The trigger action to clear from the specified dependency property.</param>
        public void ClearTriggeredValue(DependencyProperty dp, SetTriggerAction action)
        {
            Contract.Require(dp, nameof(dp));
            Contract.Require(action, nameof(action));

            if (dp.IsReadOnly)
            {
                throw new InvalidOperationException(PresentationStrings.DependencyPropertyIsReadOnly.Format(dp.Name));
            }

            var wrapper = GetDependencyPropertyValue(dp, dp.PropertyType);

            wrapper.ClearTriggeredValue(action);
        }
示例#7
0
        /// <summary>
        /// Consumes a 'set' trigger action.
        /// </summary>
        /// <param name="state">The parser state.</param>
        /// <param name="trigger">The trigger to populate with actions.</param>
        /// <returns><c>true</c> if a trigger action was successfully consumed; otherwise, <c>false</c>.</returns>
        private static Boolean ConsumeSetTriggerAction(UvssParserState state, Trigger trigger)
        {
            var selector = default(UvssSelector);

            state.AdvanceBeyondWhiteSpace();

            var propertyNameToken = state.TryConsumeNonWhiteSpace();
            MatchTokenOrFail(state, propertyNameToken, UvssLexerTokenType.StyleName);

            state.AdvanceBeyondWhiteSpace();

            if (state.CurrentToken.TokenType == UvssLexerTokenType.OpenParenthesis)
            {
                var selectorOpenParensToken = state.TryConsumeNonWhiteSpace();
                MatchTokenOrFail(state, selectorOpenParensToken, UvssLexerTokenType.OpenParenthesis);

                selector = ConsumeSelector(state, false);

                var selectorCloseParensToken = state.TryConsumeNonWhiteSpace();
                MatchTokenOrFail(state, selectorCloseParensToken, UvssLexerTokenType.CloseParenthesis);
            }

            state.AdvanceBeyondWhiteSpace();

            var value  = GetStringBetweenCurlyBraces(state);
            var action = new SetTriggerAction(propertyNameToken.Value.Value, selector, value);

            trigger.Actions.Add(action);

            return true;
        }