private void AddItem(CharacterSheet.ItemWithDescription item) { if (item == null) { return; } var sl = new StackLayout() { Orientation = StackOrientation.Horizontal, }; var up = AddButton("Up"); var down = AddButton("Down"); var frame = MainPage.CreateFrame(string.Empty); sl.Children.Add(up); sl.Children.Add(frame); sl.Children.Add(down); Items.Children.Add(sl); var cntrls = new Controls() { up = up, text = frame.Content as Label, down = down, }; controls.Add(cntrls); UpdateItem(cntrls, item); }
private void UpdateItem(Controls controls, CharacterSheet.ItemWithDescription item) { var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } MainPage.SetTapHandler(controls.up, () => MoveItem(item, -1, true)); MainPage.AddTapHandler(controls.up, () => MoveItem(item, -1, false), 2); controls.text.Text = item.AsString(sheet); MainPage.SetTapHandler(controls.down, () => MoveItem(item, 1, true)); MainPage.AddTapHandler(controls.down, () => MoveItem(item, 1, false), 2); }
private void MoveItem(CharacterSheet.ItemWithDescription item, int dir, bool onePosition) { if (items == null) { return; } var index = items.IndexOf(item); if (index < 0) { return; } var newIndex = onePosition ? index + dir : (dir < 0 ? 0 : items.Count - 1); newIndex = Math.Min(Math.Max(0, newIndex), items.Count - 1); if (newIndex == index) { return; } items.Remove(item); items.Insert(newIndex, item); UpdateLabels(); }