为什么在WP7中绑定需要这么长时间?我可以看到它发生了

时间:2012-09-25 17:31:35

标签: silverlight windows-phone-7 binding

我正在页面的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

2 个答案:

答案 0 :(得分:1)

1)将您的DataContext与viewModel相关联,并使用ItemsSource={Binding searchResults}"

将该列表绑定在UI本身上

2)在Loaded事件上执行lstSearchResults.ItemSource = searchResults;

请注意,如果您的列表是动态的,则建议将lis设为ObservableCollection

如果searchResults是可变高度项,则UI绑定可能需要一些时间,具体取决于ItemTemplate。要解决这个问题,应该使用Virtualizing StackPanel,它已经是ListBox Control的一部分。因此,如果您已经在使用列表框,那么在您的情况下出现问题的可能性极小。有关详细信息,请参阅此resource。我希望它有所帮助。

答案 1 :(得分:0)

  1. 正在调用OnNavigatedTo事件,您可以尝试在那里工作
  2. 我不完全确定你的意思,但如果你已经在可观察集合和列表框之间进行了绑定,那么你对可观察集合所做的更改将反映在列表框中。