私はその要件が必要です..
最初に、ListBox にバインドされたデータのセットがあります...最後までスクロールすると、コレクションにさらにデータを追加し、ListBox を更新します... Windows phone でこれを実現する方法はありますか?
私はその要件が必要です..
最初に、ListBox にバインドされたデータのセットがあります...最後までスクロールすると、コレクションにさらにデータを追加し、ListBox を更新します... Windows phone でこれを実現する方法はありますか?
「これを達成する」とは、ListBoxが最後にあるかどうかを検出する可能性を意味すると思います。その場合、これが役立つはずです。
ユーザーがスクロールしたかどうか、および現在の位置を確認するには、最初に ScrollViewer コントロールにアクセスする必要があります。私のページが ListContent という名前の場合、次のコードで適切なスタートが切れるはずです。
public partial class ListContent
{
private ScrollViewer scrollViewer;
public ListContent()
{
InitializeComponent();
Loaded += OnLoaded();
}
protected virtual void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
scrollViewer = ControlHelper.List<ScrollViewer>(lbItems).FirstOrDefault();
if (scrollViewer == null) return;
FrameworkElement framework = VisualTreeHelper.GetChild(viewer, 0) as FrameworkElement;
if (framework == null) return;
VisualStateGroup group = FindVisualState(framework, "ScrollStates");
if (group == null) return;
group.CurrentStateChanged += OnListBoxStateChanged;
}
private VisualStateGroup FindVisualState(FrameworkElement element, string name)
{
if (element == null)
return null;
IList groups = VisualStateManager.GetVisualStateGroups(element);
return groups.Cast<VisualStateGroup>().FirstOrDefault(@group => @group.Name == name);
}
private void OnListBoxStateChanged(object sender, VisualStateChangedEventArgs e)
{
if (e.NewState.Name == ScrollState.NotScrolling.ToString())
{
// Check the ScrollableHeight and VerticalOffset here to determine
// the position of the ListBox.
// Add items, if the ListBox is at the end.
// This event will fire when the listbox complete stopped it's
// scrolling animation
}
}
}
データを動的に追加することについて話している場合は、データに ObservableCollection を使用していることを確認してください。追加された項目は、ListBox に自動的に表示されます。