确定Listbox何时完成加载绑定元素

时间:2011-07-17 09:42:14

标签: c# wpf data-binding listbox binding

我有一个ListBox绑定到一个对象集合,除了我不知道如何调用我需要执行的代码时,一切都有效。

要明确的是,我已经将用户选择其他项目时的Listbox_SelectionChanged事件连接起来 - 并且工作正常。

但是,当首次显示ListBox 时,我想在列表中的第一个项目上调用相同的代码,默认情况下。类似于ListBox_BoundDataFinishLoading或其他东西......

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以挂钩ItemList-Changed事件并选择添加后的第一个项目:

public MyWindow()  
{  
    InitializeComponent();  

    ((INotifyCollectionChanged)ListBox.Items).CollectionChanged +=  
        ListBox_CollectionChanged;  
}  

private void ListBox_CollectionChanged(object sender,   
    NotifyCollectionChangedEventArgs e)  
{  
    if (e.Action == NotifyCollectionChangedAction.Add && ListBox.SelectedItem == null)
    {
        ListBox.SelectedItem = e.NewItems[0];
    }      
}

答案 1 :(得分:1)

不确定您是否真的可以找到完成WPF数据绑定的安全通知。但也许你可以做到以下几点:

你说你已经从控件处理SelectionChanged通知,所以这是UI - > DataModel工作流程。如果在绑定对象中你有Selected属性并将其绑定到control(让我们说突出显示该行),这意味着在SelectionChanged事件上你可以做Selected = true,这将做UI-> ViewModel-> UI(选择一行)。但这也意味着,在ViewModel对象集合的初始绑定时,应该足以将第一个元素的Selected属性设置为true。

对我而言,很难说它是否真的适用于你的情况,因为我不知道你的应用程序的架构,但这可能是要遵循的方法之一。

希望这有帮助。

问候。