C#WPF窗口构造函数中TextBox的可见性?

时间:2014-12-11 18:15:04

标签: c# wpf

我有一个带隐藏文本框的窗口类。 我正在使用带有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中寻找什么:/

2 个答案:

答案 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?