Используйте внедрение зависимости для введения единственного объекта конфигурации в любые классы, которым нужен он. Таким образом, можно использовать ложную конфигурацию для тестирования или независимо от того, что Вы хотите..., Вы явно не выходите и получаете что-то, что должно быть инициализировано с конфигурационными файлами. С внедрением зависимости Вы не передаете объект вокруг также.
Размер (FrameworkElement.ActualWidth FrameworkElement.ActualHeight) и позиция (Canvas.Top, Canvas.Bottom, Canvas.Left, Canvas.Right) будут достаточными, если они всегда прямоугольные. В этом случае вы можете легко вычислить, перекрываются ли два прямоугольника. Если элементы могут быть более сложной формы, они становятся волосатыми. Понятия не имею, могу ли я проверить пересечение двух экземпляров Visual в WPF.
Может быть, мы можем использовать хит-тест ? При таком подходе вы можете по крайней мере проверить, пересекается ли определенная точка или геометрия с определенным визуалом. Таким образом, вам нужно будет определить геометрию или список точек, которые более или менее точно соответствуют границам вашего второго визуала.