我创建了一个由12个标签组成的自定义UserControl。自定义UserControl中的标签内容未更新
现在,当程序加载,以“默认”为内容的标签需要改变。
// This is called in my main forms constructor, right before InitializeComponent()
public void ShowRigInfo()
{
// This is here because if I try to call PopluateLabels, I get an "Object not
// set to an instance of object" error
grdRigInfo = new RigInfoGrid();
var contractor = SplitString("contractor", _rigInfo);
var projectName = SplitString("projectname", _rigInfo);
var location = SplitString("location", _rigInfo);
var operatorName = SplitString("operator", _rigInfo);
var rigName = SplitString("rigsite_name", _rigInfo);
var rigManager = SplitString("rigmanager", _rigInfo);
grdRigInfo.PopulateLabels(contractor, projectName, location, operatorName,
rigName, rigManager);
}
// A public method of my custom UserControl to update label content
public void PopulateLabels(string contractor, string project, string location,
string operatorName, string rigName, string manager)
{
lblContractor.Content = contractor;
lblProjectName.Content = project;
lblLocation.Content = location;
lblOperator.Content = operatorName;
lblRigName.Content = rigName;
lblRigManager.Content = manager;
}
我的问题是,我怎样才能在程序启动时更新标签?感谢任何和所有的帮助。
编辑
我曾尝试之前和我的主要形式InitializeComponent()
之后调用ShowRigInfo()
。他们都没有改变标签。
EDIT 2
好吧,我解决了这个之前,我居然看到了答案。我所做的是将我的ShowRigInfo()
移动到我的自定义UserControl中,而不是我的主窗体。我不知道为什么我从一开始就没有这样做,但现在就是这样。我将研究答案的DataBinding部分。感谢你们。
为什么你不把它放在InitializeComponent()之后? – Davio
@Davio:我已经试过了,它也没有改变任何东西。 – MyCodeSucks
@Prayos我发现你的问题说你在* InitializeComponent()之前试过*。你尝试过吗?您的标签需要进行初始化,然后才能对其进行编辑 – Rachel