我创建了一个包含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
也是可能的? (这有可能吗?)
答案 0 :(得分:2)
在WPF中,与WinForms不同,在InitializeComponent()之后,控件不会完全初始化。因此,未初始化/未加载的控件会抛出错误。
您需要编写处理程序来捕获控件的Loaded事件。
获取更详细的信息here。
示例(部分取自OP的代码):
public FileSelector()
{
InitializeComponent();
TB_FolderPath.Loaded += delegate { TB_FolderPath.Text = @"c:\tmp\Test\"; }
}