昨日の続き
LoadContentを呼ぶとかそういうことはやめて、Measureの後にInvalidateMeasureを呼び、またMeasureを呼ぶことにしたらうまくいった。
ただ、ビジュアルツリーの子孫要素、全部に対してInvalidateMeasureを呼ばないといけなかった。
メモがてら。
protected override Size MeasureOverride(Size availableSize) { base.MeasureOverride(availableSize); // いろいろ処理 var selfAndDescendants = SelfAndDescendants(this); foreach(var item in selfAndDescendants) { ((UIElement)item).InvalidateMeasure(); } return base.MeasureOverride(availableSize); } private static IEnumerable<DependencyObject> SelfAndDescendants(DependencyObject d) { if (d == null) yield break; yield return d; for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++) { DependencyObject child = VisualTreeHelper.GetChild(d, i); foreach(DependencyObject item in SelfAndDescendants(child)) { yield return item; } } }