gpt4 book ai didi

windows-phone-7 - 如何使用App.xaml资源中定义的Popup?

转载 作者:行者123 更新时间:2023-12-02 09:35:33 25 4
gpt4 key购买 nike

我在 App.xaml 资源中定义了一个弹出窗口:

<Application.Resources>
<Popup x:Key="popup">
//some content here
</Popup>
</Application.Resources>

我想这样使用它:

                    Popup popup = this.Resources["popup"] as Popup;
popup.IsOpen = true;

由于某种原因,弹出窗口未显示?非常感谢任何帮助。

最佳答案

您的问题是,当您在 App.xaml Resources 中定义 PopUp 及其内容时,您将其分配给与显示在您的可视化树不同的可视化树。页。将 IsOpen 属性设置为 true 并不足以使其真正可见,您必须将 PopUp 添加到当前可视化树。这是你的第二个问题,因为 PopUp 已经有一个 Parent,你不能将它直接添加到你的页面,因为你会得到一个 InvalidOperationException >.

这是一个可能的解决方案:

popup = App.Current.Resources["popup"] as Popup;
App.Current.Resources.Remove("popup"); // remove the PopUp from the Resource and thus clear his Parent property
ContentPanel.Children.Add(popup); // add the PopUp to a container inside your page visual tree
popup.IsOpen = true;

请注意,这样您的应用程序的资源字典中就不再有它的引用,如果您尝试随后调用此方法,它将因 NullReferenceException 而失败。同样,通过一点代码,您可以修复此问题,并在关闭 PopUp 时将其添加回资源中:

popup.IsOpen = false;//对之前存储的 PopUp 的本地引用ContentPanel.Children.Remove(popup);//从当前可视化树中删除App.Current.Resources.Add("弹出窗口", 弹出窗口);//将其添加回资源

虽然这段代码可以工作,并且您可以正确显示您的 PopUp,但我认为对于您可以在页面中实际定义的 PopUp 来说,这有点过分了,只需通过更改IsOpen 属性。

关于windows-phone-7 - 如何使用App.xaml资源中定义的Popup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990055/

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