public async Task ChildrenCanOnlyBeActiveWhenConductorIsActivated() { var conductor = new Conductor <IScreen> .Collection.AllActive(); var conducted = new Screen(); conductor.Items.Add(conducted); await conductor.ActivateItemAsync(conducted, CancellationToken.None); Assert.False(conducted.IsActive); }
public async Task ChildrenAreActivatedIfConductorIsActive() { var conductor = new Conductor <IScreen> .Collection.OneActive(); var conducted = new Screen(); conductor.Items.Add(conducted); await((IActivate)conductor).ActivateAsync(CancellationToken.None); await conductor.ActivateItemAsync(conducted); Assert.True(conducted.IsActive); Assert.Equal(conducted, conductor.ActiveItem); }
public async Task ChildrenAreNotActivatedJustBecauseConductorIsActivated() { var conductor = new Conductor <IScreen> .Collection.OneActive(); var conducted = new Screen(); conductor.Items.Add(conducted); await((IActivate)conductor).ActivateAsync(CancellationToken.None); Assert.False(conducted.IsActive); Assert.NotEqual(conducted, conductor.ActiveItem); // For OneActive the ActiveItem needs to be explicitly set for it to activate await conductor.ActivateItemAsync(conducted, CancellationToken.None); Assert.True(conducted.IsActive); Assert.Equal(conducted, conductor.ActiveItem); }
public static async Task <T> ActivateViewModelOf <T>( [NotNull] this Conductor <IMessageDetailItem> .Collection.OneActive conductor) { if (conductor == null) { throw new ArgumentNullException(nameof(conductor)); } var item = conductor?.Items.FirstOrDefault(s => s.GetType() == typeof(T)); if (item != null) { await conductor.ActivateItemAsync(item); return((T)item); } return(default(T)); }