Exemple #1
0
        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));
        }