我有一个带隐藏文本框的窗口类。 我正在使用带有1个参数(string)的构造函数。 如果该参数=“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'"
不确定如何解决它,甚至不确定在google中寻找什么:/
答案 0 :(得分:2)
必须在调用InitializeComponent()
后完成对XAML中命名控件的所有引用。是否在构造函数上取决于你
答案 1 :(得分:1)
您可以直接调用该构造函数中的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的默认构造函数中调用)实际上是对控件的partial类的方法调用(而不是按照我的预期调用对象层次结构) )。 您可以在这篇文章中找到有关此方法的更多详细信息:What does InitializeComponent() do, and how does it work in WPF?