为什么在尝试初始化用户控件中的文本框时,主窗口中出现错误
本文关键字:窗口 错误 初始化 用户 为什么 控件 文本 | 更新日期: 2023-09-27 18:20:36
我创建了一个包含textbox
的UserControl
。当我尝试在UserControl
的构造函数中初始化textbox
时,使用这样的一些文本
public FileSelector()
{
InitializeComponent();
TB_FolderPath.Text = @"c:'tmp'Test'";
}
我在 MainWindow.xaml 中收到错误
无法创建"文件选择器"的实例。
当我删除该行时
TB_FolderPath.Text = @"c:'tmp'Test'";
我没有收到错误,但当然是一个空的textbox
.
以前当我将UserControl
的各个部分集成到MainWindow
中时,也没有问题。
我试图使用UserControl
创建一个更简单的MainWindow
版本来重现问题,但在简单的情况下它可以工作。
所以,我的问题。
问题的原因可能是什么?
如何系统地调试/分析这样的问题?构建后,我只是在VisualStudio中收到此错误,没有解释。
如何/在哪里可以初始化
UserControl
中的控件。通常,UserControl
是初始化控件的正确位置,还是也可以使用MainWindow
?(这可能吗?
在 WPF 中,与 WinForms 不同,控件在 InitializeComponent(( 之后不会完全初始化。因此,未初始化/卸载的控件会引发错误。
您需要编写处理程序来捕获控件的 Loaded 事件。
读取对象生存期事件。
在此处获取更多详细信息。
示例(部分取自 OP 的代码(:
public FileSelector()
{
InitializeComponent();
TB_FolderPath.Loaded += delegate { TB_FolderPath.Text = @"c:'tmp'Test'"; }
}