我正在页面的searchResults
事件中填充列表Loaded
。
如果此加载需要50毫秒,那么当我通过导航回加载页面时,我会在绑定完成之前看到之前的searchResults
一小段时间。
a)在页面变为可见之前,我可以在什么情况下绑定控件? (页面正被导航回,因此不再调用构造函数。)
b)有没有办法强制在Loaded事件代码中发生绑定?我注意到list1.ItemSource=x
绑定似乎是在事件函数超出范围之后完成的。好像它们是在OnIdle中完成的。
关于b)的更多细节
如果我运行以下代码:
(ItemsControl) lstSearchResults.ItemSource = searchResults;
int iCount = lstSearchResults.Items.Count
无论iCount
中是否有项目, searchResults
都将为零。
有没有办法将lstSearchResults
绑定到直接填充的searchResults
?
答案 0 :(得分:1)
1)将您的DataContext与viewModel相关联,并使用ItemsSource={Binding searchResults}"
2)在Loaded事件上执行lstSearchResults.ItemSource = searchResults;
请注意,如果您的列表是动态的,则建议将lis设为ObservableCollection
如果searchResults是可变高度项,则UI绑定可能需要一些时间,具体取决于ItemTemplate
。要解决这个问题,应该使用Virtualizing StackPanel,它已经是ListBox Control的一部分。因此,如果您已经在使用列表框,那么在您的情况下出现问题的可能性极小。有关详细信息,请参阅此resource。我希望它有所帮助。
答案 1 :(得分:0)