0

searchResults如果出现页面,我正在填充列表Loaded

如果这个加载需要 50 毫秒,那么当我通过导航回到它来加载页面时,我会searchResults在绑定完成之前看到前一个页面的几分之一秒。

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

b) 有什么方法可以强制在 Loaded 事件代码中发生绑定?我注意到list1.ItemSource=x绑定似乎是在事件函数超出范围之后完成的。好像它们是在 OnIdle 中完成的。

b) 的更多细节

如果我运行以下代码:

(ItemsControl) lstSearchResults.ItemSource = searchResults;
int iCount = lstSearchResults.Items.Count

iCount无论是否有项目,都将为零searchResults

有没有办法立即绑定lstSearchResultssearchResults该填充?

4

2 回答 2

1

1) 将您的 DataContext 关联到您的 viewModel 并使用在 UI 本身上绑定列表ItemsSource={Binding searchResults}"

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

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

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

于 2012-09-26T09:33:03.200 回答
0
  1. 正在调用 OnNavigatedTo 事件,您可以尝试在那里进行工作
  2. 我不完全确定您的意思,但如果您已经在可观察集合和列表框之间进行了绑定,那么您对可观察集合所做的更改将反映在列表框中。
于 2012-09-25T18:45:38.793 回答