尝试初始化UserControl中的文本框时,为什么在MainWindow中出现错误

时间:2012-01-16 07:31:26

标签: c# wpf user-controls

我创建了一个包含UserControl的{​​{1}}。当我尝试在textbox的构造函数中初始化textbox时,会出现一些像这样的文本

UserControl

我在MainWindow.xaml中收到错误

  

无法创建“FileSelector”的实例。

当我删除行

public FileSelector()
{
    InitializeComponent();
    TB_FolderPath.Text = @"c:\tmp\Test\";
}

我没有收到错误,但当然是空TB_FolderPath.Text = @"c:\tmp\Test\";

以前,当textbox中的UserControl部分已集成在MainWindow时,也没有问题。

我尝试使用MainWindow创建更简单的UserControl版本来重现问题,但在一个简单的情况下,它可以正常运行。

所以,我的问题。

  • 问题的原因是什么?

  • 如何系统地调试/分析这样的问题?我在构建之后只是在VisualStudio中得到了这个错误,没有解释。

  • 我如何/在哪里初始化UserControl中的控件。一般来说,UserControl是初始化控件的正确位置还是MainWindow也是可能的? (这有可能吗?)

1 个答案:

答案 0 :(得分:2)

在WPF中,与WinForms不同,在InitializeComponent()之后,控件不会完全初始化。因此,未初始化/未加载的控件会抛出错误。

您需要编写处理程序来捕获控件的Loaded事件。

阅读Object Lifetime Events

获取更详细的信息here


示例(部分取自OP的代码):

public FileSelector()
{
    InitializeComponent();
    TB_FolderPath.Loaded += delegate { TB_FolderPath.Text = @"c:\tmp\Test\"; }
}