IScrollInfoのMakeVisibleメンバーを実装しているときに、問題が発生しました。Visualスクロールされているパネルを基準にしたその境界の座標を取得する必要があります。
これがの場合UIElement、「TranslatePoint」メソッドを呼び出すだけなので簡単UIElementですが、のサブクラスでありVisual、その逆ではないため、必ずしもそれを当てにすることはできません。
これを達成するにはどうすればよいでしょうか。
IScrollInfoのMakeVisibleメンバーを実装しているときに、問題が発生しました。Visualスクロールされているパネルを基準にしたその境界の座標を取得する必要があります。
これがの場合UIElement、「TranslatePoint」メソッドを呼び出すだけなので簡単UIElementですが、のサブクラスでありVisual、その逆ではないため、必ずしもそれを当てにすることはできません。
これを達成するにはどうすればよいでしょうか。
Visualは、点または長方形の変換に使用できるGeneralTransformを返すTransformToVisualメソッドを提供します。
var transform = visual1.TransformToVisual(visual2);
var point = transform.Transform(new Point(...));
がContainerVisualの場合visual1、次のように実行できます。
var bounds = transform.TransformBounds(visual1.ContentBounds);
また
var bounds = transform.TransformBounds(visual1.DescendantBounds);