modello di struct winrt::observable_vector_base (C++/WinRT)

Classe di base da cui è possibile derivare per implementare un vettore osservabile personalizzato. Per altre informazioni ed esempi di codice, vedere Raccolte con C++/WinRT.

Sintassi

template <typename D, typename T>
struct observable_vector_base : vector_base<D, T>

Parametri di modelli

typename D Nome del tipo derivato.

typename T Tipo degli elementi nel observable_vector_base.

Requisiti

SDK minimo supportato: Windows SDK versione 10.0.17763.0 (Windows 10, versione 1809)

Spazio dei nomi: winrt

Intestazione: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluso per impostazione predefinita)

Funzioni membro

Funzione Descrizione
funzione observable_vector_base::Append Aggiunge un elemento alla fine dell'oggetto observable_vector_base .
funzione observable_vector_base::Clear Rimuove tutti gli elementi dall'oggetto observable_vector_base .
funzione observable_vector_base::First Recupera un IIterator che rappresenta il primo elemento nell'oggetto observable_vector_base .
funzione observable_vector_base::GetAt Recupera l'elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .
funzione observable_vector_base::GetMany Recupera una raccolta di elementi nell'oggetto observable_vector_base a partire dall'indice specificato.
funzione observable_vector_base::GetView Recupera una visualizzazione non modificabile dell'oggetto observable_vector_base .
funzione observable_vector_base::IndexOf Recupera l'indice di un elemento specificato nell'oggetto observable_vector_base .
funzione observable_vector_base::InsertAt Inserisce un elemento nell'indice specificato nell'oggetto observable_vector_base .
funzione observable_vector_base::RemoveAt Rimuove l'elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .
funzione observable_vector_base::RemoveAtEnd Rimuove l'ultimo elemento dall'oggetto observable_vector_base .
funzione observable_vector_base::ReplaceAll Sostituisce tutti gli elementi nell'oggetto observable_vector_base con gli elementi specificati.
funzione observable_vector_base::SetAt Imposta il valore dell'elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .
funzione observable_vector_base::Size Recupera il numero di elementi nell'oggetto observable_vector_base .
funzione observable_vector_base::VectorChanged Registra e revoca un delegato che gestisce l'evento modificato dal vettore dell'oggetto observable_vector_base .

Iterators

Un observable_vector_base è un intervallo e tale intervallo è definito da funzioni gratuite interne (ognuna delle quali recupera un iteratore) compatibile con le funzionalità del linguaggio standard. A causa di questo, è possibile enumerare gli elementi in un oggetto observable_vector_base con un'istruzione basata su for intervallo.

È anche possibile recuperare un IIterator dalla funzione observable_vector_base::First e usarlo per scorrere gli elementi in un oggetto observable_vector_base .

...
#include <iostream>
using namespace winrt;
using namespace Windows::Foundation::Collections;
...
struct MyObservableVector :
    implements<MyObservableVector, IObservableVector<float>, IVector<float>, IVectorView<float>, IIterable<float>>,
    winrt::observable_vector_base<MyObservableVector, float>
{
    auto& get_container() const noexcept
    {
        return m_values;
    }

    auto& get_container() noexcept
    {
        return m_values;
    }

private:
    std::vector<float> m_values{ 0.1f, 0.2f, 0.3f };
};
...
IObservableVector<float> coll{ winrt::make<MyObservableVector>() };

for (auto const& el : coll)
{
    std::wcout << el << std::endl;
}

IIterator<float> it{ coll.First() };
while (it.HasCurrent())
{
    std::wcout << it.Current() << std::endl;
    it.MoveNext();
}

funzione observable_vector_base::Append

Aggiunge un elemento alla fine dell'oggetto observable_vector_base .

Sintassi

void Append(T const& value);

Parametri

value Elemento da aggiungere.

funzione observable_vector_base::Clear

Rimuove tutti gli elementi dall'oggetto observable_vector_base .

Sintassi

void Clear() noexcept;

funzione observable_vector_base::First

Recupera un IIterator che rappresenta il primo elemento nell'oggetto observable_vector_base .

Sintassi

auto First();

Valore restituito

IIterator che rappresenta il primo elemento dell'oggetto observable_vector_base.

funzione observable_vector_base::GetAt

Recupera l'elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .

Sintassi

T GetAt(uint32_t const index) const;

Parametri

index Indice degli elementi in base zero.

Valore restituito

Elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .

funzione observable_vector_base::GetMany

Recupera una raccolta di elementi nell'oggetto observable_vector_base a partire dall'indice specificato.

Sintassi

uint32_t GetMany(uint32_t const startIndex, array_view<T> values) const;

Parametri

startIndex Indice degli elementi in base zero a cui iniziare.

values Un array_view per copiare gli elementi in.

Valore restituito

Valore che rappresenta il numero di elementi recuperati.

funzione observable_vector_base::GetView

Recupera una visualizzazione non modificabile dell'oggetto observable_vector_base .

Sintassi

winrt::Windows::Foundation::Collections::IVectorView<T> GetView() const noexcept;

Valore restituito

IVectorView contenente una visualizzazione non modificabile della observable_vector_base.

funzione observable_vector_base::IndexOf

Recupera l'indice di un elemento specificato nell'oggetto observable_vector_base .

Sintassi

bool IndexOf(T const& value, uint32_t& index) const noexcept;

Parametri

value Elemento, nell'oggetto observable_vector_base , da cercare.

index Indice in base zero dell'elemento se l'elemento viene trovato, in caso contrario il numero di elementi nell'oggetto observable_vector_base .

Valore restituito

true se l'elemento viene trovato, in caso contrario false.

funzione observable_vector_base::InsertAt

Inserisce un elemento nell'indice specificato nell'oggetto observable_vector_base .

Sintassi

void InsertAt(uint32_t const index, T const& value);

Parametri

index Indice in base zero in corrispondenza del quale inserire l'elemento.

value Elemento da inserire.

funzione observable_vector_base::RemoveAt

Rimuove l'elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .

Sintassi

void RemoveAt(uint32_t const index);

Parametri

index Indice in base zero dell'elemento da rimuovere.

funzione observable_vector_base::RemoveAtEnd

Rimuove l'ultimo elemento dall'oggetto observable_vector_base .

Sintassi

void RemoveAtEnd();

funzione observable_vector_base::ReplaceAll

Sostituisce tutti gli elementi dell'oggetto observable_vector_base con gli elementi specificati.

Sintassi

void ReplaceAll(array_view<T const> value);

Parametri

value Oggetto array_view contenente i nuovi elementi.

funzione observable_vector_base::SetAt

Imposta il valore dell'elemento in corrispondenza dell'indice specificato nell'oggetto observable_vector_base .

Sintassi

void SetAt(uint32_t const index, T const& value);

Parametri

index Indice in base zero dell'elemento di cui impostare il valore.

value Valore dell'elemento da impostare.

funzione observable_vector_base::Size

Recupera il numero di elementi nell'oggetto observable_vector_base .

Sintassi

uint32_t Size() const noexcept;

Valore restituito

Valore che rappresenta il numero di elementi nell'oggetto observable_vector_base .

funzione observable_vector_base::VectorChanged

Registra e/o revoca un delegato che gestisce l'evento vector-changed dell'oggetto observable_vector_base .

Sintassi

// Register
winrt::event_token VectorChanged(winrt::Windows::Foundation::Collections::VectorChangedEventHandler<T> const& handler);

// Revoke with event_token
void VectorChanged(winrt::event_token const cookie);

// Revoke with event_revoker
VectorChanged_revoker VectorChanged(winrt::auto_revoke_t, winrt::Windows::Foundation::Collections::VectorChangedEventHandler<T> const& handler) const;

Valore restituito

O void, un winrt::event_token con cui è possibile revocare un delegato registrato o un VectorChanged_revoker (un alias di tipo per un winrt::event_revoker< IObservableVectorT<>>) con cui è possibile revocare un delegato registrato.

Esempio

winrt::event_revoker<IObservableVector<float>> m_event_revoker;
...
m_event_revoker = coll.VectorChanged(winrt::auto_revoke, [this](IObservableVector<float> const&, IVectorChangedEventArgs const&)
{
    ...
});

Vedere anche