public void Organise(Size bounds, IEnumerable <DragablzItem> items) { if (items == null) { throw new ArgumentNullException("items"); } var currentCoord = 0.0; foreach ( var newItem in items.Select((di, idx) => new Tuple <int, DragablzItem>(idx, di)) .OrderBy(tuple => tuple, MultiComparer <Tuple <int, DragablzItem> > .Ascending(tuple => _getLocation(tuple.Item2)) .ThenAscending(tuple => tuple.Item1)) .Select(tuple => tuple.Item2)) { _setLocation(newItem, currentCoord); newItem.Measure(bounds); currentCoord += _getDesiredSize(newItem); } }
public void Organise(Size measureBounds, IEnumerable <DragablzItem> items) { if (items == null) { throw new ArgumentNullException("items"); } var currentCoord = 0.0; var z = int.MaxValue; foreach ( var newItem in items.Select((di, idx) => new Tuple <int, DragablzItem>(idx, di)) .OrderBy(tuple => tuple, MultiComparer <Tuple <int, DragablzItem> > .Ascending(tuple => _getLocation(tuple.Item2)) .ThenAscending(tuple => tuple.Item1)) .Select(tuple => tuple.Item2)) { Panel.SetZIndex(newItem, newItem.IsSelected ? int.MaxValue : --z); SetLocation(newItem, currentCoord); newItem.Measure(measureBounds); currentCoord += _getDesiredSize(newItem) + _itemOffset; } }