我有一个ListBox绑定到一个对象集合,除了我不知道如何调用我需要执行的代码时,一切都有效。
要明确的是,我已经将用户选择其他项目时的Listbox_SelectionChanged
事件连接起来 - 并且工作正常。
但是,当首次显示ListBox 时,我想在列表中的第一个项目上调用相同的代码,默认情况下。类似于ListBox_BoundDataFinishLoading
或其他东西......
有什么想法吗?
答案 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。
对我而言,很难说它是否真的适用于你的情况,因为我不知道你的应用程序的架构,但这可能是要遵循的方法之一。
希望这有帮助。
问候。