はじめに
UI Toolkit
を使用していて、ScrollView
のScrollbar
を再描画したいと思い以下のコードを書きました。
var scrollView = uxml.Q("SampleScrollView"); scrollView.MarkDirtyRepaint();
割と名前から推測してしまっていますが、これだと特に動作しないようです。
なかなか情報が見つからず大変でしたが、解決方法を見つけたので書き残しておきたいと思います。
解決方法
以下のメソッドを定義して呼び出せばOKです。
private static void ForceUpdate(ScrollView view) { view.schedule.Execute(() => { var fakeOldRect = Rect.zero; var fakeNewRect = view.layout; using var evt = GeometryChangedEvent.GetPooled(fakeOldRect, fakeNewRect); evt.target = view.contentContainer; view.contentContainer.SendEvent(evt); }); }