I believe that if you run Measure & Arrange , which runs in infinite Size , you can get DesiredSize .
var infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity); control.Measure(infiniteSize);
control.Arrange(new Rect(infiniteSize));
Correction:
As mentioned in the comments, just calling Measure() with an infinite Size does the trick; do not use Arrange() .
source share