WPF UserControl填充控件

时间:2013-11-15 08:48:04

标签: c# wpf wpf-controls

何时(什么事件)应该在WPF用户控件中填充控件(Combos,Drop-Downs)?

目前我正在使用UserControl_Loaded,但这不止一次,并且在开发机器上产生不一致的结果。

public UserControl_Load(x, x)
{
   if(!this.Loaded)
   {
     //populate controls here
   } 
}

如果这是最佳做法,那么我会尝试解决这个问题;但是我更感兴趣的是什么时候(什么事件)最适合用于填充控件?

由于

  

鉴于Sheridan的回答,我发现这篇精彩的博客文章给那些可能正在寻找如何在WPF中正确数据绑定的精彩教程(Blog

1 个答案:

答案 0 :(得分:1)

不是处理事件来填充控件,而是尝试数据绑定方式:

首先在实现INotifyPropertyChanged interface

的类(视图模型)中创建一个集合属性
// You need to implement the `INotifyPropertyChanged` interface properly here
public ObservableCollection<YourDataType> Items { get; set; }

然后你可以从constuctor中调用的代码中填充它,或者在Command处理程序中填充它以响应某些UI操作:

Items = GetSomeItems();

现在,如果您已将此属性的Binding定义为UI集合控件,则UI将自动更新:

<ListBox ItemsSource="{Binding Items}">
    ...
</ListBox>

只要将视图的DataContext属性设置为视图模型的实例:

DataContext = new SomeViewModel();

最后,我建议您查看MSDN上的Data Binding Overview页面以获取更多信息。