2009-01-28 21 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