Ich habe innerhalb LayoutControlGroup
mit einigen anderen LayoutControlGroup
s bekam.Reorder LayoutControlGroups innerhalb eines anderen LayoutControlGroup auf Laufzeit
Was ich tun muss, ist es, sie in bestimmte Reihenfolge zur Laufzeit neu zu ordnen.
Wenn zum Beispiel Form auftaucht Ich habe diese Gruppen in einem solchen Reihenfolge bekommt:
[Group0]
[Group1]
[Group2]
[Group3]
[Group4]
Und dann bekomme ich einige Daten aus der DB und muß nach beispielsweise nur auf diese Daten, Gruppen neu zu ordnen umkehren die Reihenfolge:
[Group4]
[Group3]
[Group2]
[Group1]
[Group0]
Was ich schon versucht:
List<BaseLayoutItem> currentOrder = lcgParentGroup.Items.Cast<object>().Where(c => c is BaseLayoutItem).Cast<BaseLayoutItem>().Where(c => c.Name.StartsWith("lcgInnerGroup") && char.IsDigit(c.Name.Last())).ToList();
currentOrder.Sort((x, y) => System.Collections.Comparer.Default.Compare(x.Location.Y, y.Location.Y));
// Example order
List<BaseLayoutItem> requiredOrder = new List<BaseLayoutItem>(currentOrder);
requiredOrder.Reverse();
for (int i = 1; i < requiredOrder.Count; ++i)
{
// I just move every group after every relative group.
BaseLayoutItem relative = lcgParentGroup.Items.FindByName(requiredOrder[i - 1].Name);
DevExpress.XtraLayout.Customization.LayoutItemDragController dragController = new DevExpress.XtraLayout.Customization.LayoutItemDragController(requiredOrder[i], relative, MoveType.Outside, InsertLocation.After, LayoutType.Vertical);
bool result = requiredOrder[i].Move(dragController);
}
jedoch jedes Mal die result
ist false
.
Gibt es eine andere Möglichkeit, es zu tun?