窗口构造函数中文本框的 C# WPF 可见性

本文关键字:WPF 可见性 构造函数 中文 文本 窗口 | 更新日期: 2023-09-27 18:34:03

我有一个带有隐藏文本框的窗口类。我正在使用带有 1 个参数(字符串)的构造函数。如果该参数 = "a",我想使文本框可见。

  public partial class Window1 : Window
{
    public Window1(string x)
    {
        if(x == "a") this.TBOcena.Visibility = System.Windows.Visibility.Visible;
    }
}

但似乎我做错了什么,因为它不起作用。我收到异常 "An unhandled exception of type 'System.NullReferenceException'"

不知道如何解决它,甚至不确定在谷歌中寻找什么:/

窗口构造函数中文本框的 C# WPF 可见性

在 XAML 中对命名控件的所有引用都必须在调用 InitializeComponent() 之后完成。这是否在构造函数上取决于你

您可以在该构造函数中直接调用 InitializeComponent 方法:

public Window1(string x)
{
    InitializeComponent();
    if(x == "a") this.TBOcena.Visibility = System.Windows.Visibility.Visible;
}

或者,您可以创建一个默认构造函数并调用它:

public Window1()
{
   InitializeComponent();
} 
public Window1(string x):base()
{
    if(x == "a") this.TBOcena.Visibility = System.Windows.Visibility.Visible;
}

对 InitializeComponent() 的调用(通常在至少 Window 和 UserControl 的默认构造函数中调用)实际上是对控件分部类的方法调用(而不是像我最初预期的那样调用对象层次结构)。你可以在这篇文章中找到这个方法的更多详细信息:InitializeComponent() 是做什么的,它在 WPF 中是如何工作的?