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

本文关键字:绑定 元素 加载 Listbox 何时完 确定 | 更新日期: 2023-09-27 18:02:36

我有一个ListBox绑定到一个对象集合,一切都工作,除了我不知道如何调用一些代码,我需要在列表中的一个项目被选中时执行。

为了清楚起见,我已经为用户选择不同的项时连接了Listbox_SelectionChanged事件—并且工作良好。

当ListBox 第一次显示时,我想在列表中的第一项上调用相同的代码,这是默认的。像ListBox_BoundDataFinishLoading之类的东西,或者…

任何想法?

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

你可以钩到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];
    }      
}

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

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

对我来说,很难说它是否真的适用于你的情况,因为我不知道你的应用程序的架构,但这可以是一种方法。

希望对你有帮助。

问候。