窗口的默认构造函数是否必须公开?

时间:2014-08-20 14:58:42

标签: c# wpf

我正在为我的WPF应用程序创建一个对话框窗口。我知道WPF要求所有控件都有一个默认构造函数,我可以创建所有带有我想要的参数的构造函数。但默认构造函数是否必须公开?我可以将其设为内部,私人,甚至保护吗?

2 个答案:

答案 0 :(得分:6)

控件在WPF中不需要默认构造函数,除非你想从XAML实例化控件。

拥有这样的控件是完全合法的:

public partial class MyUserControl : UserControl
{
      public MyUserControl(string someParameter) : this()
      { 
         InitializeComponent();
      }
}

如图所示,删除了默认构造函数,但您需要确保调用InitializeComponent();

如果从XAML实例化控件,则嵌入控件必须可以看到默认构造函数

因此,如果嵌入控件位于同一个程序集中,则可以是internal,否则它必须为public

答案 1 :(得分:1)

使你的构造函数内部确保类型只会被当前程序集中的类型实例化,即使后来确定类型本身应该是public而不是internal。换句话说,您可以决定更改类型的可见性,而不会限制其实例化。

使构造函数公开具有相反的效果(显然),如果你希望它可以在可见的任何地方实例化它,那么这可能是明智的。