ISupportIncrementalLoading Interface

Legt einen Aufrufkontrakt für Auflistungsansichten fest, die inkrementelles Laden unterstützen.

Syntax


public interface ISupportIncrementalLoading

Attribute

[Version(0x06020000)]
[WebHostHidden()]

Member

ISupportIncrementalLoadingSchnittstelle hat diese Membertypen:

Methoden

The ISupportIncrementalLoading Schnittstelle hat diese Methoden. Es erbt auch Methoden von Object Klasse.

MethodeBeschreibung
LoadMoreItemsAsync Initializes incremental loading from the view.

 

Eigenschaften

Der ISupportIncrementalLoadingSchnittstelle hat diese Eigenschaften.

EigenschaftZugriffstypBeschreibung

HasMoreItems

SchreibgeschütztGets a sentinel value that supports incremental loading implementations.

 

Beispiele

Im folgenden Codebeispiel wird die Implementierung dieser Schnittstelle veranschaulicht. Die vollständige Codeliste finden Sie im XAML-Datenbindungsbeispiel.


#region ISupportIncrementalLoading

public bool HasMoreItems
{
    get { return HasMoreItemsOverride(); }
}

public Windows.Foundation.IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count)
{
    if (_busy)
    {
        throw new InvalidOperationException("Only one operation in flight at a time");
    }

    _busy = true;

    return AsyncInfo.Run((c) => LoadMoreItemsAsync(c, count));
}

#endregion 

#region INotifyCollectionChanged

public event NotifyCollectionChangedEventHandler CollectionChanged;

#endregion 

#region Private methods

async Task<LoadMoreItemsResult> LoadMoreItemsAsync(CancellationToken c, uint count)
{
    try
    {
        var items = await LoadMoreItemsOverrideAsync(c, count);
        var baseIndex = _storage.Count;

        _storage.AddRange(items);

        // Now notify of the new items
        NotifyOfInsertedItems(baseIndex, items.Count);

        return new LoadMoreItemsResult { Count = (uint)items.Count };
    }
    finally
    {
        _busy = false;
    }
}

void NotifyOfInsertedItems(int baseIndex, int count)
{
    if (CollectionChanged == null)
    {
        return;
    }

    for (int i = 0; i < count; i++)
    {
        var args = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, _storage[i + baseIndex], i + baseIndex);
        CollectionChanged(this, args);
    }
}

#endregion

#region Overridable methods

protected abstract Task<IList<object>> LoadMoreItemsOverrideAsync(CancellationToken c, uint count);
protected abstract bool HasMoreItemsOverride();

#endregion 

#region State

List<object> _storage = new List<object>();
bool _busy = false;

#endregion 


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml.Data
Windows::UI::Xaml::Data [C++]

Metadaten

Windows.winmd

Siehe auch

Binding
Beispiel für XAML-Datenbindung
Übersicht über die Datenbindung

 

 

Anzeigen:
© 2015 Microsoft