private void TryRegisterRegion() { AvaloniaObject targetElement = this.HostControl; if (targetElement.CheckAccess()) { IRegionManager regionManager = this.FindRegionManager(targetElement); IRegionManager attachedRegionManager = this.GetAttachedRegionManager(); if (regionManager != attachedRegionManager) { if (attachedRegionManager != null) { this.attachedRegionManagerWeakReference = null; attachedRegionManager.Regions.Remove(this.Region.Name); } if (regionManager != null) { this.attachedRegionManagerWeakReference = new WeakReference(regionManager); regionManager.Regions.Add(this.Region); } } } }
private void TryCreateRegion() { AvaloniaObject targetElement = this.TargetElement; if (targetElement == null) { this.Detach(); return; } if (targetElement.CheckAccess()) { this.Detach(); if (!this.regionCreated) { string regionName = this.RegionManagerAccessor.GetRegionName(targetElement); CreateRegion(targetElement, regionName); this.regionCreated = true; } } }