Макет обновления приложения WPF при переподключении RDP - PullRequest
0 голосов
/ 06 мая 2019

Окно WPF, в котором есть элемент управления контентом с менеджером региона Prism и именем региона.Призма региона имеет пользовательский элемент управления, который вводится в него.Окно открыто и полностью загружено, после переподключения с RDP, окно Prism регион потерял введенный вид.Я выяснил, что при повторном подключении RDP вдова обновляет макет и выполняет рендеринг, происходит событие загрузки и UpdateLayout.

Есть идеи?

Я уже наблюдаю следующее решение, но оно не 'Это помогло.

WPF: предотвращение выгрузки и загрузки после подключения RDP (dis)

<ContentControl x:Name="DetailRegion"    Grid.Row="1"
                        Visibility="{Binding IsAgentVisible,`enter code here`
                                             Converter={StaticResource BoolVisibilityConverter},
                                             ConverterParameter=Collapsed}"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Top"
                        Focusable="False"
                        Padding="5"
                        regions:RegionManager.RegionManager="{Binding CvaRegionManager,UpdateSourceTrigger=PropertyChanged}"
                        regions:RegionManager.RegionName="StandAloneCVAViewRegion" />

1 Ответ

0 голосов
/ 07 мая 2019

При повторном подключении RDP к управляющему хосту элемент управления контентом воссоздается.Я могу решить эту проблему, создав область Prism с помощью кода на C #, таким образом, я могу обработать случай восстановления элемента управления и проверить, сохраняет ли Region уже представление.

 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);
        } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...