private bool OnSelectNewItemCanExecute(IStepBarItem item) { if (item is null) { return(false); } // Demo case 1: allow when visited if (Enum <StepBarItemStates> .Flags.IsFlagSet(item.State, StepBarItemStates.IsVisited)) { return(true); } // Demo case 2: allow when "lower" page var selectedItem = SelectedItem; if (selectedItem is not null) { if (item.Number < selectedItem.Number) { return(true); } } return(false); }
public static void Selection(Automation.StepBar target, IStepBarItem selectedItem, Func <IStepBarItem, IStepBarItem, bool> itemComparer) { var model = target.Current; var items = model.Items; Assert.That(model.SelectedItem, Is.EqualTo(selectedItem) .Using <IStepBarItem>(itemComparer)); Assert.That(target.SelectedItem?.Current.DataContext, Is.EqualTo(selectedItem) .Using <IStepBarItem>(itemComparer)); var count = items.Count; var selectedIndex = 0; for (var i = 0; i < count; i++) { if (itemComparer.Invoke(items[i], selectedItem)) { selectedIndex = i; break; } } var expectedStates = new StepBarItemStates[count]; expectedStates[0] = StepBarItemStates.IsVisited; for (var i = 1; i < selectedIndex; i++) { expectedStates[i] = StepBarItemStates.IsBeforeCurrent; } expectedStates[selectedIndex] = StepBarItemStates.IsVisited | StepBarItemStates.IsCurrent; for (var i = selectedIndex + 1; i < count - 1; i++) { expectedStates[i] = StepBarItemStates.None; } expectedStates[count - 1] |= StepBarItemStates.IsLast; for (var i = 0; i < count; i++) { var expectedItem = expectedStates[i]; var item = items[i]; Assert.That(item.State.HasFlag(expectedItem)); } }
private void UpdateSelection() { var items = Items; if (items is not null) { if (items.Count > 0) { var lastItem = items.Last(); lastItem.State = Enum <StepBarItemStates> .Flags.SetFlag(lastItem.State, StepBarItemStates.IsLast); } } SelectedItem = items?.FirstOrDefault(); }
protected override async Task InitializeAsync() { await base.InitializeAsync(); var items = new List <IStepBarItem>(); for (var i = 0; i < 10; i++) { items.Add(new StepBarItemModel { Title = $"Item {i + 1}", Number = i + 1, Command = SelectNewItem }); } Items = items; SelectedItem = items.FirstOrDefault(); }
private static bool CompareItems(IStepBarItem x, IStepBarItem y) { return(string.Equals(x?.Title, y?.Title) && string.Equals(x?.Description, y?.Description) && Equals(x?.Number, y?.Number)); }
private async Task OnSelectNewItemExecuteAsync(IStepBarItem item) { SelectedItem = item; }
public StepBarItemViewModel(IStepBarItem stepBarItem) { Item = stepBarItem; }