double MeasureRow(int row) { using (var tm = new TempMeasureHelper(this)) { if (row >= cells.Count()) { return(0); } var ret = cells.ElementAt(row).Cast <Object>().Select((x, i) => { var ck = (row, i); if (CellViewIndex.ContainsKey(ck)) { return(CellViewIndex[ck].Height); } else { return(tm.Measure(x).Request.Height); } }).Max(); return(ret); } }
double MeasureColumn(int col) { using (var tm = new TempMeasureHelper(this)) { var els = cells.Select(x => col < x.Count ? x[col] : new NullCol()); if (els.All(x => x is NullCol)) { return(0); } var ret = els.Select((x, i) => { var ck = (i, col); if (CellViewIndex.ContainsKey(ck)) { return(CellViewIndex[ck].Width); } else { return(tm.Measure(x).Request.Width); } }).Max(); return(ret); } }