wpf - 重新连接 RDP 时 WPF 应用程序更新布局
问题描述
具有 Prism 区域管理器和区域名称的内容控件的 WPF 窗口。棱镜区域有一个注入到它的用户控件。窗口打开并满载,重新连接 RDP 后,窗口 Prism 区域丢失了注入的视图。我发现在 RDP 上重新连接寡妇正在更新布局并重新渲染,加载事件正在触发并且 UpdateLayout 也是如此。
任何想法 ?
我已经观察了以下解决方案,但对这个解决方案没有帮助。
<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" />
解决方案
当 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);
}
推荐阅读
- sql - 查询超出资源限制。使用了 [n] 个 CPU 秒数,并且此查询必须使用少于 [n] 个 CPU 秒数
- ios - Cordova iOS 6.1.0 如何在 WKwebview 的外部屏幕上显示图像
- android - what's the reference level when creating activity?
- java - How to get attribute's element name in the XML/XSD
- amazon-web-services - Cognito Forgot password fails
- flyway - Defined sequence of SQL files need to migrate one after another using flyway tool
- flutter - Can't find any device while scanning for bluetooth device using esc_pos_printer: ^2.1.2 package in flutter
- google-analytics - What happens if I send a Custom dimension whitout configure in GA?
- gnuplot - Drawing a circle in gnuplot
- java - Is GenericObjectPools method thread safe?