gpt4 book ai didi

wpf - Frame.Content,赋值操作不行?

转载 作者:行者123 更新时间:2023-12-04 06:48:02 32 4
gpt4 key购买 nike

这是一个非常简单的repro:启动VS2010或VS2008,新建一个WPF项目(.Net Framework 3.5 sp1),在项目中添加一个空页面(Page1.xaml)。

其余代码在 MainWindow.xaml.cs 中:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

TestFrameContent();
}

private void TestFrameContent()
{
FrameworkElement fe = Activator.CreateInstance(Type.GetType("WpfFrameContentProblem.Page1")) as FrameworkElement;
Frame frmContainer = new Frame();
frmContainer.Content = fe;

Debug.Assert(frmContainer.Content != null, "Content is null");
}
}

运行应用程序,它将在 Debug.Assert 上失败,表明 frmContainer.Content == null。

一个简单的任务会失败对我来说真的是个谜。任何人?

最佳答案

不幸的是,这不是一个简单的任务。在 Frame 上设置 Content 属性实际上调用了 Navigate , 异步设置内容。您将需要处理 Navigated事件,该事件“在找到要导航到的内容时发生,并且可以从 Content 属性获得,尽管它可能尚未完成加载。”

private void TestFrameContent()
{
FrameworkElement fe = Activator.CreateInstance(
Type.GetType("WpfFrameContentProblem.Page1")) as FrameworkElement;
Frame frmContainer = new Frame();
frmContainer.Content = fe;
frmContainer.Navigated += delegate(object sender, NavigationEventArgs e)
{
// This will succeed
Debug.Assert(frmContainer.Content != null, "Content is null");
};
}

关于wpf - Frame.Content,赋值操作不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511564/

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