代码之家  ›  专栏  ›  技术社区  ›  Eric

编辑TextBlock时出现InvalidOperationException。OnTextChanged内部的内联线已更改

  •  1
  • Eric  · 技术社区  · 16 年前

    在下面的代码中,我随机遇到了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 回复  |  直到 16 年前
        1
  •  0
  •   csharptest.net    15 年前

    我不认为在文本更改事件中更改文本是个好主意。这将导致事件递归触发,并最终生成堆栈溢出。。。 多么讽刺:)