UpdateRegions() public method

public UpdateRegions ( ) : void
return void
コード例 #1
0
        public void RegionWillNotGetCreatedTwiceWhenThereAreMoreRegions()
        {
            var control1 = new MockFrameworkElement();
            var control2 = new MockFrameworkElement();

            var accessor = new MockRegionManagerAccessor
                               {
                                   GetRegionName = d => d == control1 ? "Region1" : "Region2"
                               };

            var adapter = new MockRegionAdapter();
            adapter.Accessor = accessor;

            var behavior1 = this.GetBehavior(control1, accessor, adapter);
            var behavior2 = this.GetBehavior(control2, accessor, adapter);

            behavior1.Attach();
            behavior2.Attach();

            accessor.UpdateRegions();

            Assert.IsTrue(adapter.CreatedRegions.Contains("Region1"));
            Assert.IsTrue(adapter.CreatedRegions.Contains("Region2"));
            Assert.AreEqual(1, adapter.CreatedRegions.Count((name) => name == "Region2"));

        }
        public async Task RegionWillNotGetCreatedTwiceWhenThereAreMoreRegions()
        {
            await ExecuteOnUIThread(() =>
                {
                    var control1 = new MockFrameworkElement();
                    var control2 = new MockFrameworkElement();

                    var accessor = new MockRegionManagerAccessor
                                       {
                                           GetRegionName = d => d == control1 ? "Region1" : "Region2"
                                       };

                    var adapter = new MockRegionAdapter() { Accessor = accessor };

                    var behavior1 = DelayedRegionCreationBehaviorFixture.GetBehavior(control1, accessor, adapter);
                    var behavior2 = DelayedRegionCreationBehaviorFixture.GetBehavior(control2, accessor, adapter);

                    behavior1.Attach();
                    behavior2.Attach();

                    accessor.UpdateRegions();

                    Assert.IsTrue(adapter.CreatedRegions.Contains("Region1"));
                    Assert.IsTrue(adapter.CreatedRegions.Contains("Region2"));
                    Assert.AreEqual(1, adapter.CreatedRegions.Count((name) => name == "Region2"));
                });
        }
コード例 #3
0
        public IRegion Initialize(object regionTarget, string regionName)
        {
            CreatedRegions.Add(regionName);

            var region = new MockPresentationRegion();

            RegionManager.GetObservableRegion(regionTarget as DependencyObject).Value = region;

            // Fire update regions again. This also happens if a region is created and added to the regionmanager
            if (this.Accessor != null)
            {
                Accessor.UpdateRegions();
            }

            return(region);
        }
        public async Task RegionDoesNotGetCreatedTwiceWhenUpdatingRegions()
        {
            await ExecuteOnUIThread(() =>
                {
                    var control = new MockFrameworkElement();

                    var accessor = new MockRegionManagerAccessor
                    {
                        GetRegionName = d => "myRegionName"
                    };

                    var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor);
                    behavior.Attach();
                    accessor.UpdateRegions();
                    IRegion region = RegionManager.GetObservableRegion(control).Value;

                    accessor.UpdateRegions();

                    Assert.AreSame(region, RegionManager.GetObservableRegion(control).Value);
                });
        }
        public async Task RegionGetsCreatedWhenAccessingRegions()
        {
            await ExecuteOnUIThread(() =>
                {
                    var control = new MockFrameworkElement();

                    var accessor = new MockRegionManagerAccessor
                                       {
                                           GetRegionName = d => "myRegionName"
                                       };

                    var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor);
                    behavior.Attach();

                    accessor.UpdateRegions();

                    Assert.IsNotNull(RegionManager.GetObservableRegion(control).Value);
                    Assert.IsInstanceOfType(RegionManager.GetObservableRegion(control).Value, typeof(IRegion));
                });
        }
        public async Task ShouldCleanupBehaviorOnceRegionIsCreated()
        {
            await ExecuteOnUIThread(() =>
                {
                    var control = new MockFrameworkElement();

                    var accessor = new MockRegionManagerAccessor
                    {
                        GetRegionName = d => "myRegionName"
                    };

                    var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor);
                    WeakReference behaviorWeakReference = new WeakReference(behavior);
                    behavior.Attach();
                    accessor.UpdateRegions();
                    Assert.IsTrue(behaviorWeakReference.IsAlive);
                    GC.KeepAlive(behavior);

                    behavior = null;
                    GC.Collect();

                    Assert.IsFalse(behaviorWeakReference.IsAlive);
                });
        }
        public async Task BehaviorDoesNotPreventControlFromBeingGarbageCollectedWhenRegionWasCreated()
        {
            await ExecuteOnUIThread(() =>
                {
                    var control = new MockFrameworkElement();
                    WeakReference controlWeakReference = new WeakReference(control);

                    var accessor = new MockRegionManagerAccessor
                    {
                        GetRegionName = d => "myRegionName"
                    };

                    var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor);
                    behavior.Attach();
                    accessor.UpdateRegions();

                    Assert.IsTrue(controlWeakReference.IsAlive);
                    GC.KeepAlive(control);

                    control = null;
                    GC.Collect();

                    Assert.IsFalse(controlWeakReference.IsAlive);
                });
        }
コード例 #8
0
        public void RegionDoesNotGetCreatedTwiceWhenUpdatingRegions()
        {
            var control = new MockFrameworkElement();

            var accessor = new MockRegionManagerAccessor
            {
                GetRegionName = d => "myRegionName"
            };

            var behavior = this.GetBehavior(control, accessor);
            behavior.Attach();
            accessor.UpdateRegions();
            IRegion region = RegionManager.GetObservableRegion(control).Value;

            accessor.UpdateRegions();

            Assert.AreSame(region, RegionManager.GetObservableRegion(control).Value);
        }
コード例 #9
0
        public void RegionGetsCreatedWhenAccessingRegions()
        {
            var control = new MockFrameworkElement();

            var accessor = new MockRegionManagerAccessor
                               {
                                   GetRegionName = d => "myRegionName"
                               };

            var behavior = this.GetBehavior(control, accessor);
            behavior.Attach();

            accessor.UpdateRegions();

            Assert.IsNotNull(RegionManager.GetObservableRegion(control).Value);
            Assert.IsInstanceOfType(RegionManager.GetObservableRegion(control).Value, typeof(IRegion));
        }
コード例 #10
0
        public void ShouldCleanupBehaviorOnceRegionIsCreated()
        {
            var control = new MockFrameworkElement();

            var accessor = new MockRegionManagerAccessor
            {
                GetRegionName = d => "myRegionName"
            };

            var behavior = this.GetBehavior(control, accessor);
            WeakReference behaviorWeakReference = new WeakReference(behavior);
            behavior.Attach();
            accessor.UpdateRegions();
            Assert.IsTrue(behaviorWeakReference.IsAlive);
            GC.KeepAlive(behavior);

            behavior = null;
            GC.Collect();

            Assert.IsFalse(behaviorWeakReference.IsAlive);
        }
コード例 #11
0
        public void BehaviorDoesNotPreventControlFromBeingGarbageCollectedWhenRegionWasCreated()
        {
            var control = new MockFrameworkElement();
            WeakReference controlWeakReference = new WeakReference(control);

            var accessor = new MockRegionManagerAccessor
            {
                GetRegionName = d => "myRegionName"
            };

            var behavior = this.GetBehavior(control, accessor);
            behavior.Attach();
            accessor.UpdateRegions();
            
            Assert.IsTrue(controlWeakReference.IsAlive);
            GC.KeepAlive(control);

            control = null;
            GC.Collect();

            Assert.IsFalse(controlWeakReference.IsAlive);
        }