重新连接RDP时WPF应用程序更新布局

重新连接RDP时WPF应用程序更新布局,wpf,rdp,Wpf,Rdp,WPF窗口,该窗口具有具有Prism区域管理器和区域名称的内容控件。 Prism区域有一个注入到其中的用户控件。 窗口打开并完全加载,重新连接RDP后,窗口棱镜区域丢失了注入视图。 我发现在RDP上,重新连接寡妇是更新布局和重新渲染,加载事件是触发和更新layout 有什么想法吗 我已经观察到了下面的解决方案,但在这一点上没有帮助 重新创建RDP重新连接承载内容控件的控件时。我可以通过c#代码创建棱镜区域来解决这个问题,这样我就可以处理控件的重新创建,并检查区域是否已经存储了视图 priva

WPF窗口,该窗口具有具有Prism区域管理器和区域名称的内容控件。 Prism区域有一个注入到其中的用户控件。 窗口打开并完全加载,重新连接RDP后,窗口棱镜区域丢失了注入视图。 我发现在RDP上,重新连接寡妇是更新布局和重新渲染,加载事件是触发和更新layout

有什么想法吗

我已经观察到了下面的解决方案,但在这一点上没有帮助


重新创建RDP重新连接承载内容控件的控件时。我可以通过c#代码创建棱镜区域来解决这个问题,这样我就可以处理控件的重新创建,并检查区域是否已经存储了视图

 private void CvaControl_Loaded(object sender, RoutedEventArgs e)
        {                
            SetRegionManager(this.DetailRegion, "StandAloneCVAViewRegion");
        }

        void SetRegionManager(DependencyObject regionTarget, string regionName)
        {
            var cvaRegionManager = ((CvaApplicationViewModel) DataContext).CvaRegionManager;
            if (cvaRegionManager.Regions.ContainsRegionWithName("StandAloneCVAViewRegion"))
            {
                this.DetailRegion.Content = cvaRegionManager.Regions["StandAloneCVAViewRegion"].ActiveViews.First();
                return;
            }
            RegionManager.SetRegionName(regionTarget, regionName);
            RegionManager.SetRegionManager(regionTarget,cvaRegionManager);
        } 

当RDP重新连接承载内容控件的控件时,将重新创建该控件。我可以通过c#代码创建棱镜区域来解决这个问题,这样我就可以处理控件的重新创建,并检查区域是否已经存储了视图

 private void CvaControl_Loaded(object sender, RoutedEventArgs e)
        {                
            SetRegionManager(this.DetailRegion, "StandAloneCVAViewRegion");
        }

        void SetRegionManager(DependencyObject regionTarget, string regionName)
        {
            var cvaRegionManager = ((CvaApplicationViewModel) DataContext).CvaRegionManager;
            if (cvaRegionManager.Regions.ContainsRegionWithName("StandAloneCVAViewRegion"))
            {
                this.DetailRegion.Content = cvaRegionManager.Regions["StandAloneCVAViewRegion"].ActiveViews.First();
                return;
            }
            RegionManager.SetRegionName(regionTarget, regionName);
            RegionManager.SetRegionManager(regionTarget,cvaRegionManager);
        }