public static FrameworkElement GetRootVisual(this FrameworkElement element)
{
FrameworkElement parent = null;
while (element != null) {
parent = element;
if (parent is UserControl) {
// HACK: A UserControl parented to another UserControl has a non-null
// parent; however we want to consider the UserControl as the
// root visual for its contents...
break;
}
element = element.Parent as FrameworkElement;
}
return parent;
}