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); }