예제 #1
0
        /// <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);
                    }
                }
            }
        }
예제 #2
0
        /// <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
            });
        }