下面是一个非常简单的repro:启动VS2010或VS2008,新建一个WPF项目(.Net Framework 3.5 sp1),向项目添加一个空页面(Page1.xaml)。Frame.Content,赋值操作不起作用?
剩下的代码是在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。
这对我来说真的很神秘,一个简单的任务就会失败。任何人?
谢谢。 我想在这种情况下,我应该使用ContentControl作为我的FrameworkElemnt容器。请告诉我ContentControl.Content = x是一个简单的作业:) – neolei 2010-08-18 14:34:28
@ sun1991:嗯,这是一个依赖属性赋值,所以我仍然不会称它为“简单”。您可以将双向绑定应用于Content属性,并将更新推送到另一个对象。 ContentControl并不像Frame那样执行值强制操作,所以它至少应该*操作*就像一个简单的属性分配:)。 – Quartermeister 2010-08-18 14:48:36