InvalidOperationException при редактировании TextBlock.Inlines изнутри OnTextChanged - PullRequest
1 голос
/ 28 января 2009

Я получаю InvalidOperationException несколько случайно в следующем коде, какой хороший способ это исправить?

public class ParsedTextBlock : TextBlock
{
    static ParsedTextBlock() {
        TextProperty.OverrideMetadata(typeof(ParsedTextBlock),
            new FrameworkPropertyMetadata("No Text Set",
                FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender,
                OnTextChanged)
            );
    }

    private static void OnTextChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
    {
        ParsedTextBlock control = (ParsedTextBlock)obj;
        control.Inlines.Clear();
        control.Inlines.Add(new Run("test " + args.NewValue as string))
    }
}

1 Ответ

0 голосов
/ 28 августа 2009

Я не верю, что изменение текста внутри события изменения текста было бы хорошей идеей. Это приведет к рекурсивному запуску события и, в конечном итоге, к переполнению стека ... как иронично:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...