public async Task ScreenDoesNotNeedToBeActiveItemToCloseIt()
        {
            // conductor conducts conducted
            // conducted.TryCloseAsync() will ask conductor to close it

            var conductor = new Conductor <IScreen> .Collection.OneActive();

            var conducted1 = new StateScreen {
                IsClosable = true
            };
            var conducted2 = new StateScreen {
                IsClosable = true
            };

            // All items are closable
            conductor.Items.Add(conducted1);
            conductor.Items.Add(conducted2);
            // ActivateWith allows synced parent-child activation.
            conducted2.ActivateWith(conductor);
            // ActiveItem is automatically conducted.
            conductor.ActiveItem = conducted1;

            await((IActivate)conductor).ActivateAsync(CancellationToken.None);
            await conducted2.TryCloseAsync();

            Assert.False(conducted2.IsActive);
            Assert.True(conducted2.IsClosed);
        }
Пример #2
0
        public async Task ScreenTryCloseAsyncWillAskConductorToCloseIt()
        {
            // conductor conducts conducted
            // conducted.TryCloseAsync() will ask conductor to close it

            var conductor = new Conductor <IScreen> .Collection.AllActive();

            var conducted1 = new StateScreen {
                IsClosable = true
            };
            var conducted2 = new StateScreen {
                IsClosable = true
            };

            // All items are closable
            conductor.Items.Add(conducted1);
            conductor.Items.Add(conducted2);

            await((IActivate)conductor).ActivateAsync(CancellationToken.None);
            await conducted1.TryCloseAsync();

            Assert.True(conductor.IsActive);

            Assert.False(conducted1.IsActive);
            Assert.True(conducted1.IsClosed);

            Assert.True(conducted2.IsActive);
            Assert.False(conducted2.IsClosed);
        }
        public async Task ScreenTryCloseAsyncWillAskConductorToCloseIt()
        {
            // conductor conducts conducted
            // conducted.TryCloseAsync() will ask conductor to close it

            var conductor = new Conductor <IScreen>();
            var conducted = new StateScreen {
                IsClosable = true
            };

            conductor.ActiveItem = conducted;

            await((IActivate)conductor).ActivateAsync(CancellationToken.None);
            await conducted.TryCloseAsync();

            Assert.True(conductor.IsActive);
            Assert.False(conducted.IsActive);
            Assert.True(conducted.IsClosed);
        }