我遇到了这个问题:
我创建了一个自定义UserControl
,并添加了以下属性:
public string TestString { get; set; }
没关系,在“属性”中,我可以对其进行编辑:
现在是问题所在:我需要在用户控件的构造函数中读取此属性:要简单地对此进行测试,我有以下代码:
public ucnTest()
{
InitializeComponent();
MessageBox.Show(TestString);
}
当我跑步时,我得到了:
似乎在构造函数期间值尚未传递...我该如何解决?
PS:如果将消息放入加载事件中,它将起作用:
private void ucnTest_Load(object sender, EventArgs e)
{
MessageBox.Show(TestString);
}
答案 0 :(得分:1)
WPF / UWP的经验法则:所有视觉活动都应在Loaded
事件之前进行。部分加载的控件可能行为异常,甚至崩溃。因此,从一开始就直接从构造函数中弹出消息框确实是个坏主意。
答案 1 :(得分:0)
要了解发生了什么情况,建议您研究一下窗体构造函数的InitializeComponent()方法(或添加UserControl的位置)。
您应该看到,在您将设计器中分配的值传递给控件之前,已调用UserControl的构造函数。
如果您确实需要访问构造函数中的值,则需要像这样将其作为参数传递:
public string TestString { get; set; }
public ucnTest(string myStringValue)
{
InitializeComponent();
TestString = myStringValue;
MessageBox.Show(TestString);
}
,然后您需要在InitializeComponent()方法中将"YourString"
传递给构造函数。
编辑: 将属性添加到代码中