/// <summary> /// Deletes the token. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="ExecutedRoutedEventArgs" /> instance containing the event data.</param> private void DeleteToken(object sender, ExecutedRoutedEventArgs e) { Paragraph para = this.CaretPosition.Paragraph; if (para != null) { TokenContainer tokenContainer = null; Inline inlineToRemove = para.Inlines.Where(inline => { var inlineUiContainer = inline as InlineUIContainer; if (inlineUiContainer != null) { tokenContainer = inlineUiContainer.Child as TokenContainer; return(tokenContainer != null && (tokenContainer.Key.Equals(e.Parameter))); } return(false); }).FirstOrDefault(); if (inlineToRemove != null) { para.Inlines.Remove(inlineToRemove); if (tokenContainer != null) { this.RemoveTokenByKey(tokenContainer.Key); } } } }
/// <summary> /// Creates the token container. /// </summary> /// <param name="token">The token.</param> /// <returns> /// Returns the <see cref="InlineUIContainer" /> representing the container. /// </returns> private InlineUIContainer CreateTokenContainer(Token token) { var presenter = new TokenContainer(token.Key) { Content = token, ContentTemplate = this.TokenTemplate, }; if (this.TokenTemplate == null && token.Content != null) { if (!string.IsNullOrEmpty(this.MemberPath)) { var property = token.Content.GetType().GetProperty(this.MemberPath); if (property != null) { var value = property.GetValue(token.Content, null); if (value != null) { presenter.Content = value; } } } } return(new InlineUIContainer(presenter) { BaselineAlignment = BaselineAlignment.TextBottom }); }