/// <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); }
/// <inheritdoc/> public void ClearTriggeredValue(SetTriggerAction trigger) { Contract.Require(trigger, nameof(trigger)); if (triggeredValueSource != trigger) { return; } ClearTriggeredValue(); }
/// <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); }
/// <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; }