internal static bool TryGetDetailColumnName(DataGridItemPropertyMap itemPropertyMap, string masterColumnName, out string detailColumnName)
        {
            detailColumnName = default(string);

            if (itemPropertyMap == null)
            {
                return(false);
            }

            var masterItemProperty = ItemsSourceHelper.GetItemPropertyFromProperty(itemPropertyMap.MasterItemProperties, masterColumnName);

            if (masterItemProperty == null)
            {
                return(false);
            }

            DataGridItemPropertyBase detailItemProperty;

            if (!itemPropertyMap.TryGetDetailItemProperty(masterItemProperty, out detailItemProperty))
            {
                return(false);
            }

            detailColumnName = PropertyRouteParser.Parse(detailItemProperty);

            return(!string.IsNullOrEmpty(detailColumnName));
        }
        internal static bool TryGetDetailColumn(DataGridItemPropertyMap itemPropertyMap, ColumnCollection detailColumns, ColumnBase masterColumn, out ColumnBase detailColumn)
        {
            detailColumn = default(ColumnBase);

            if ((detailColumns == null) || (masterColumn == null))
            {
                return(false);
            }

            string detailColumnName;

            if (!DataGridItemPropertyMapHelper.TryGetDetailColumnName(itemPropertyMap, masterColumn.FieldName, out detailColumnName))
            {
                return(false);
            }

            detailColumn = detailColumns[detailColumnName];

            return(detailColumn != null);
        }