2009-01-28 51 views
1

我在下面的代码中得到了一些随机InvalidOperationException,有什么解决它的好方法?InvalidOperationException从内部编辑TextBlock.Inlines OnTextChanged

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)) 
    } 
} 

回答

0

我不相信改变文本内的文本更改事件将是一个好主意。这会导致事件发生递归并最终生成堆栈溢出... 有多讽刺:)

+0

文本更改为容器控件,它改变了子控件的文本,而不是它本身。 – Eric 2009-09-07 18:06:22