2012-10-26 81 views
2

我创建了一个由12个标签组成的自定义UserControl。自定义UserControl中的标签内容未更新

enter image description here

现在,当程序加载,以“默认”为内容的标签需要改变。

// 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部分。感谢你们。

+0

为什么你不把它放在InitializeComponent()之后? – Davio

+0

@Davio:我已经试过了,它也没有改变任何东西。 – MyCodeSucks

+0

@Prayos我发现你的问题说你在* InitializeComponent()之前试过*。你尝试过吗?您的标签需要进行初始化,然后才能对其进行编辑 – Rachel

回答

3

好,因为这是WPF,我会建议在某种模式的支持(实现)这些标签绑定的属性INotifyPropertyChanged的。

如果你用谷歌这些词,你会走很长的路。

2

为什么不试试呢在Loaded事件处理

1

AD.Net正确:将您的初始设置放入Loaded事件中。在构造函数中,你可以玩局部变量,但你通常不能玩视觉元素。一旦“Loaded”事件被触发,所有的UI组件都应该可以使用。

但是,我强烈建议您在标签上使用DataBinding和DataContext,而不是通过公共方法填充它们。最后,如果您开始使用数据网格,树视图和列表视图,您将意识到WPF系统是如何围绕Binding构建的。

相关问题