为什么在尝试初始化用户控件中的文本框时,主窗口中出现错误

本文关键字:窗口 错误 初始化 用户 为什么 控件 文本 | 更新日期: 2023-09-27 18:20:36

我创建了一个包含textboxUserControl。当我尝试在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'"; }
}