WPF窗口,其内容控件带有Prism区域管理器和区域名称。 棱镜区域具有注入到其中的用户控件。 窗口打开并完全加载,与RDP重新连接后,Prism窗口丢失了注入的视图。 我发现在RDP上,重新连接寡妇会更新布局并重新渲染,加载事件也会触发,而UpdateLayout也是如此。
有什么想法吗?
我已经观察到以下解决方案,但对这个解决方案没有帮助。
WPF: Prevent unload & load after RDP (dis)connect
<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" />
答案 0 :(得分:0)
在RDP重新连接承载控件的控件时,将重新创建内容控件。我可以通过使用c#代码创建Prism区域来解决该问题,因此我可以处理控件重新生成的情况,并检查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);
}