/// <summary> /// Setup the flushing operation. /// </summary> /// <typeparam name="TData">Data type of column.</typeparam> /// <param name="column">The column.</param> /// <param name="getValue">The delegate to return data value.</param> /// <returns>This row input for fluent coding.</returns> public RowInput <T> WithFlush <TData>(Column <TData> column, Func <T, TData> getValue) { if (column == null) { throw new ArgumentNullException(nameof(column)); } VerifyNotSealed(); _target = _target.Union(column); _flushFuncs.Add((p, v) => { if (getValue == null) { return(false); } var value = getValue(v); if (column.AreEqual(p.GetValue(column), value)) { return(false); } p.EditValue(column, value); return(true); }); return(this); }
private static IColumns GetTargetColumns(IColumns result, RowBinding binding) { Debug.Assert(binding != null); var input = binding.RowInput; if (input != null) { return(result.Union(input.Target)); } var childBindings = binding.ChildBindings; if (childBindings == null) { return(result); } for (int i = 0; i < childBindings.Count; i++) { result = GetTargetColumns(result, childBindings[i]); } return(result); }