Esempio n. 1
0
    private static void ensureAdorner(DependencyObject d, Action <StrokeAdorner> action)
    {
        var tb = d as TextBlock;

        if (tb == null)
        {
            throw new Exception("StrokeAdorner only works on TextBlocks");
        }
        EventHandler f = null;

        f = new EventHandler((o, e) =>
        {
            var adornerLayer = AdornerLayer.GetAdornerLayer(tb);
            if (adornerLayer == null)
            {
                throw new Exception("AdornerLayer should not be empty");
            }
            var adorners = adornerLayer.GetAdorners(tb);
            var adorner  = adorners == null ? null : adorners.OfType <StrokeAdorner>().FirstOrDefault();
            if (adorner == null)
            {
                adorner = new StrokeAdorner(tb);
                adornerLayer.Add(adorner);
            }
            tb.LayoutUpdated -= f;
            action(adorner);
        });
        tb.LayoutUpdated += f;
    }
 public StrokeTextBlock()
 {
     _adorner            = new StrokeAdorner(this);
     this.LayoutUpdated += StrokeTextBlock_LayoutUpdated;
 }