public static void ClearBindingsRecursively([CanBeNull] this BindableObject item, bool clearDataContext, bool clearAttachedValues)
        {
            if (item == null)
            {
                return;
            }

            var content = GetContent(item);

            if (!(content is string))
            {
                var enumerable = content as IEnumerable;
                if (enumerable == null)
                {
                    ClearBindingsRecursively(content as BindableObject, clearDataContext, clearAttachedValues);
                }
                else
                {
                    foreach (var child in enumerable)
                    {
                        var bindableObject = child as BindableObject;
                        if (child == null || bindableObject == null)
                        {
                            break;
                        }
                        bindableObject.ClearBindingsRecursively(clearDataContext, clearAttachedValues);
                    }
                }
            }
            item.ClearBindings(clearDataContext, clearAttachedValues);
        }