private object FindParentViewModel()
{
var viewModel = BindingContext as IViewModel;
var relationalViewModel = BindingContext as IRelationalViewModel;
object parentViewModel = null;
if (viewModel != null && relationalViewModel != null)
{
var parent = Parent;
while (parentViewModel == null && parent != null)
{
var parentViewModelAsRelationalViewModel = parent.BindingContext as IRelationalViewModel;
var parentViewModelAsViewModel = parent.BindingContext as IViewModel;
if (parentViewModelAsViewModel != null && parentViewModelAsRelationalViewModel != null && !ReferenceEquals(parent.BindingContext, viewModel))
{
parentViewModel = parentViewModelAsViewModel;
}
else
{
parent = parent.Parent;
}
}
}
return parentViewModel;
}
}