/// <summary> /// Gets all data context on the path to root /// </summary> public static object[] GetDataContexts(DotvvmBindableControl contextControl, bool seeThis) { var context = seeThis ? contextControl.GetValue(DotvvmBindableControl.DataContextProperty, false) : null; return (context == null ? new object[0] : new[] { context }) .Concat(contextControl.GetAllAncestors().OfType<DotvvmBindableControl>() .Where(c => c.properties.ContainsKey(DotvvmBindableControl.DataContextProperty)) .Select(c => c.GetValue(DotvvmBindableControl.DataContextProperty, false))) .ToArray(); }