0

何时(什么事件)应在 WPF 用户控件中填充控件(组合、下拉菜单)?

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

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

如果这是最佳实践,那么我将尝试解决该问题;但我更感兴趣的是何时(什么事件)最适合用于填充控件?

谢谢

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

4

1 回答 1

1

与其处理事件来填充控件,不如尝试数据绑定方式:

INotifyPropertyChanged首先在实现接口的类(视图模型)中创建一个集合属性:

// You need to implement the `INotifyPropertyChanged` interface properly here
public ObservableCollection<YourDataType> Items { get; set; }

然后,您可以从构造函数或处理程序中调用的代码中填充它Command以响应某些 UI 操作:

Items = GetSomeItems();

现在,如果您Binding为此属性定义了一个 UI 集合控件,那么 UI 将自动更新:

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

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

DataContext = new SomeViewModel();

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

于 2013-11-15T13:12:47.887 回答