gpt4 book ai didi

c# - 更改内部元素的可见性后,UWP 无法打开外部窗口

转载 作者:行者123 更新时间:2023-12-04 17:09:40 26 4
gpt4 key购买 nike

我有一个用 C# 编写的 UWP 应用,我需要在其中打开第二个窗口。

在第二个窗口中,有一个元素需要切换其可见性(在某些情况下)。

请在此处查找 MVCE:https://github.com/cghersi/UWPExamples/tree/master/AppWindowAndVisibility

如果你仔细观察它,你会看到一个元素m_searchGrid,我们可以改变它的可见性(使用方法SwitchSearchBarVisibility())

要打开一个新窗口,我使用基元 AppWindow.TryCreateAsyncElementCompositionPreview.SetAppWindowContent

现在,以下过程在调用 ElementCompositionPreview.SetAppWindowContent 时会导致异常:

  1. 打开一个新窗口(在应用程序中,单击“打开 AppWindow”按钮)
  2. 更改元素在新打开的窗口中的可见性(在应用程序中,在打开的新窗口中,单击“显示/隐藏搜索栏”按钮)
  3. 关闭第二个窗口
  4. 重新打开另一个窗口(在应用程序中,重新单击“打开 AppWindow”按钮)

从代码的角度来看,在第 4 步,我可以看到方法 ElementCompositionPreview.SetAppWindowContent 抛出异常(参见 MainPage.xaml.cs 的第 108 行,在方法 ShowAsync()).

您是否知道可能是什么原因?

也许我应该以不同的方式配置窗口或元素?

谢谢!!

最佳答案

UWP Cannot open an external window after changing visibility of an inner element

问题是 m_wrapperCanvas 被之前的 m_appWindow 使用,即使你调用 m_appWindow = null 也没有释放。

为了解决这个问题,我们建议设置m_wrapperCanvas = null,并在ElementCompositionPreview.SetAppWindowContent之前重新设置m_wrapperCanvas

private void AppWindow_OnClosed(AppWindow sender, AppWindowClosedEventArgs args)
{
m_appWindow.Closed -= AppWindow_OnClosed;
m_appWindow = null;
m_wrapperCanvas = null;
}

..........

try
{
Init();
ElementCompositionPreview.SetAppWindowContent(m_appWindow, m_wrapperCanvas);
}

关于c# - 更改内部元素的可见性后,UWP 无法打开外部窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69742688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com