我有一個列表綁定到一個可觀察的自定義類的集合。完美的作品。Silverlight列表框綁定問題
我想做什麼我們最後添加一行不是可觀察集合的一部分,只要它出現在視圖中它應該觸發一個函數將更多的項加載到列表框中。
感謝 Erphan拉傑普特
我有一個列表綁定到一個可觀察的自定義類的集合。完美的作品。Silverlight列表框綁定問題
我想做什麼我們最後添加一行不是可觀察集合的一部分,只要它出現在視圖中它應該觸發一個函數將更多的項加載到列表框中。
感謝 Erphan拉傑普特
列表框默認模板看起來是這樣的:
<Border ...>
<ScrollViewer x:Name="ScrollViewer" ...>
<ItemsPresenter />
</ScrollViewer>
</Border>
的ItemsPresenter
是呈現從ItemsSource
的元素之一。
那你覆蓋默認的模板是這樣的:
<Border ...>
<ScrollViewer x:Name="ScrollViewer" ...>
<StackPanel>
<ItemsPresenter ... />
<!-- Your Control Here -->
</StackPanel>
</ScrollViewer>
</Border>
我已經想出了一個辦法做到這一點請建議,如果這是考慮從Silverlight控件的當前限制是正確的做法。
在CS<ListBox x:Name="MyListBox" ItemsSource="{Binding MyObservableCollection}"
ItemTemplate="{StaticResource ItemDisplayTemplate}"
ManipulationCompleted="MyListBox_ManipulationCompleted"/>
:
在XAMLprivate void MyListBox_ManipulationCompleted(object sender,
System.Windows.Input.ManipulationCompletedEventArgs e)
{
ScrollViewer sv = Utility.FindScrollViewerRecursive((ListBox)sender);
int a = Int32.Parse(Math.Round(sv.VerticalOffset).ToString()) +
Int32.Parse(Math.Round(sv.ViewportHeight).ToString());
if ((a + 1) >= sv.ExtentHeight)
{
Debug.WriteLine("Should start loading new items in background");
}
Debug.WriteLine(sv.VerticalOffset + " - " + sv.ViewportHeight + " - " + sv.ExtentHeight);
}
我從這裏採取的FindScrollViewerRecursive http://blogs.msdn.com/b/rohantha/archive/2010/09/12/silverlight-wp7-list-scroll-with-items-as-image-description-from-web-bing-image-search.aspx
我會盡快發佈完整的示例源代碼供現在請建議,如果這種方法是確定的。
爲什麼你想要這樣做?創建要添加到集合的項目是否昂貴?你在使用標準的ListBox控件嗎? – AnthonyWJones 2011-01-27 22:41:09
這是可能的,但不是列表框中的最後一行。它將看起來是一個分離的控制。 – vorrtex 2011-01-27 23:44:48
您是否試圖將數據逐步加載到集合中? – WiredPrairie 2011-01-28 13:42:04