更改内部元素的可见性后,UWP 无法打开外部 window
UWP Cannot open an external window after changing visibility of an inner element
我有一个用 C# 编写的 UWP 应用程序,我需要在其中打开第二个 window。
在这一秒内 window,有一个元素需要切换其可见性(在某些情况下)。
请在此处查找 MVCE:https://github.com/cghersi/UWPExamples/tree/master/AppWindowAndVisibility
如果您查看它,您会看到一个元素 m_searchGrid
,我们可以更改它的可见性(使用方法 SwitchSearchBarVisibility()
)
要打开一个新的 window,我使用基元 AppWindow.TryCreateAsync
和 ElementCompositionPreview.SetAppWindowContent
。
现在,以下过程在调用 ElementCompositionPreview.SetAppWindowContent
时会导致异常:
- 打开一个新的 window(在应用程序中,单击“打开 AppWindow”按钮)
- 在新打开的 window 中更改元素的可见性(在应用程序中,在新打开的 window 中,单击按钮“Show/hide 搜索栏” )
- 关闭第二个window
- 重新打开另一个 window(在应用程序中,重新单击“打开 AppWindow”按钮)
从代码的角度来看,在第 4 步,我可以看到方法 ElementCompositionPreview.SetAppWindowContent
抛出异常(参见 MainPage.xaml.cs
的第 108 行,在方法 ShowAsync()
中)。
你知道可能是什么原因吗?
也许我应该以不同的方式配置 window 或元素?
谢谢!!
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 应用程序,我需要在其中打开第二个 window。
在这一秒内 window,有一个元素需要切换其可见性(在某些情况下)。
请在此处查找 MVCE:https://github.com/cghersi/UWPExamples/tree/master/AppWindowAndVisibility
如果您查看它,您会看到一个元素 m_searchGrid
,我们可以更改它的可见性(使用方法 SwitchSearchBarVisibility()
)
要打开一个新的 window,我使用基元 AppWindow.TryCreateAsync
和 ElementCompositionPreview.SetAppWindowContent
。
现在,以下过程在调用 ElementCompositionPreview.SetAppWindowContent
时会导致异常:
- 打开一个新的 window(在应用程序中,单击“打开 AppWindow”按钮)
- 在新打开的 window 中更改元素的可见性(在应用程序中,在新打开的 window 中,单击按钮“Show/hide 搜索栏” )
- 关闭第二个window
- 重新打开另一个 window(在应用程序中,重新单击“打开 AppWindow”按钮)
从代码的角度来看,在第 4 步,我可以看到方法 ElementCompositionPreview.SetAppWindowContent
抛出异常(参见 MainPage.xaml.cs
的第 108 行,在方法 ShowAsync()
中)。
你知道可能是什么原因吗?
也许我应该以不同的方式配置 window 或元素?
谢谢!!
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
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);
}