从OnTextChanged内部编辑TextBlock.Inlines时出现InvalidOperationException

时间:2009-01-28 06:05:33

标签: c# wpf

我在以下代码中有点随机获取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 :(得分:0)

我不相信在文本更改事件中更改文本将是一个好主意。这会导致事件以递归方式触发并最终生成堆栈溢出... 多么具有讽刺意味:)