Silverlight 为什么在WP7中绑定需要这么长时间?我能看到它的发生

Silverlight 为什么在WP7中绑定需要这么长时间?我能看到它的发生,silverlight,windows-phone-7,binding,Silverlight,Windows Phone 7,Binding,我正在页面的Loaded事件中填充一个列表searchResults 如果加载需要50毫秒,那么当我通过导航返回页面加载页面时,在绑定完成之前的几秒钟内,我将看到前面的搜索结果 a) 在什么情况下,我可以在页面变为可见之前绑定控件?(页面将被导航回,因此不会再次调用构造函数。) b) 有没有办法强制在加载的事件代码中发生绑定?我注意到list1.ItemSource=x绑定似乎是在事件函数超出范围后完成的。就好像他们是在OnIdle中完成的一样 更多关于b)的详细信息 如果我运行以下代码: (I

我正在页面的
Loaded
事件中填充一个列表
searchResults

如果加载需要50毫秒,那么当我通过导航返回页面加载页面时,在绑定完成之前的几秒钟内,我将看到前面的
搜索结果

a) 在什么情况下,我可以在页面变为可见之前绑定控件?(页面将被导航回,因此不会再次调用构造函数。)

b) 有没有办法强制在加载的事件代码中发生绑定?我注意到
list1.ItemSource=x
绑定似乎是在事件函数超出范围后完成的。就好像他们是在OnIdle中完成的一样

更多关于b)的详细信息

如果我运行以下代码:

(ItemsControl) lstSearchResults.ItemSource = searchResults;
int iCount = lstSearchResults.Items.Count
无论
搜索结果中是否有项目,
iCount
都将为零

有没有办法将
lstSearchResults
绑定到立即填充的
searchResults

  • OnNavigatedTo事件正在被调用,您可以尝试在那里执行您的工作
  • 我不完全确定您的意思,但是如果您已经在可观察集合和列表框之间进行了绑定,那么您对可观察集合所做的更改将反映在列表框中
  • 1) 将DataContext与viewModel关联,并使用
    ItemsSource={Binding searchResults}“

    2) 在加载的事件上执行
    lstSearchResults.ItemSource=searchResults;

    请注意,如果您的列表是动态的,建议将lis设置为可观察收集

    如果搜索结果是高度可变的项,则UI绑定可能需要时间,具体取决于
    项模板
    。要解决此问题,应使用虚拟化StackPanel,它已经是ListBox控件的一部分。因此,如果您已经使用ListBox,则在您的情况下不太可能出现此问题。有关详细信息,请参阅led信息您可以浏览一下。我希望它能有所帮助。

    (1 | a)是的,这很有效!谢谢!我已经在(2 | b)中添加了更多细节