winrt::observable_vector_base struct template (C++/WinRT)

Kelas dasar tempat Anda dapat memperoleh untuk mengimplementasikan vektor kustom Anda sendiri yang dapat diamati. Untuk informasi selengkapnya, dan contoh kode, lihat Koleksi dengan C++/WinRT.

Sintaks

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

Parameter templat

typename D Nama jenis turunan Anda.

typename T Jenis elemen dalam observable_vector_base.

Persyaratan

SDK minimum yang didukung: Windows SDK versi 10.0.17763.0 (Windows 10, versi 1809)

Namespace: winrt

Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (disertakan secara default)

Fungsi anggota

Fungsi Deskripsi
observable_vector_base::Tambahkan fungsi Menambahkan elemen ke akhir objek observable_vector_base .
observable_vector_base::Clear function Menghapus semua elemen dari objek observable_vector_base .
observable_vector_base::Fungsi pertama Mengambil IIterator yang mewakili elemen pertama dalam objek observable_vector_base .
observable_vector_base::Fungsi GetAt Mengambil elemen pada indeks yang ditentukan dalam objek observable_vector_base .
observable_vector_base::GetMany (Fungsi getMany) Mengambil kumpulan elemen dalam objek observable_vector_base yang dimulai pada indeks yang diberikan.
observable_vector_base::Fungsi GetView Mengambil tampilan objek observable_vector_base yang tidak dapat diubah.
fungsi observable_vector_base::IndexOf Mengambil indeks elemen tertentu dalam objek observable_vector_base .
observable_vector_base::InsertAt (Fungsi insertAt) Menyisipkan elemen pada indeks yang ditentukan dalam objek observable_vector_base .
observable_vector_base::RemoveAt (Fungsi RemoveAt) Menghapus elemen pada indeks yang ditentukan dalam objek observable_vector_base .
observable_vector_base::RemoveAtEnd (Fungsi RemoveAtEnd) Menghapus elemen terakhir dari objek observable_vector_base .
observable_vector_base::ReplaceAll function Mengganti semua elemen dalam objek observable_vector_base dengan elemen yang ditentukan.
fungsi observable_vector_base::SetAt Mengatur nilai elemen pada indeks yang ditentukan dalam objek observable_vector_base .
observable_vector_base::Fungsi ukuran Mengambil jumlah elemen dalam objek observable_vector_base .
observable_vector_base::VectorChanged Mendaftarkan dan mencabut delegasi yang menangani peristiwa yang diubah vektor dari objek observable_vector_base .

Iterator

observable_vector_base adalah rentang, dan rentang tersebut didefinisikan oleh fungsi bebas internal (yang masing-masing mengambil iterator) yang kompatibel dengan fitur bahasa standar. Karena itu, Anda dapat menghitung elemen dalam objek observable_vector_base dengan pernyataan berbasis for rentang.

Anda juga dapat mengambil IIterator dari fungsi observable_vector_base::First , dan menggunakannya untuk melakukan iterasi melalui elemen dalam objek 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();
}

observable_vector_base::Tambahkan fungsi

Menambahkan elemen ke akhir objek observable_vector_base .

Sintaks

void Append(T const& value);

Parameter

value Elemen yang akan ditambahkan.

observable_vector_base::Clear function

Menghapus semua elemen dari objek observable_vector_base .

Sintaks

void Clear() noexcept;

observable_vector_base::Fungsi pertama

Mengambil IIterator yang mewakili elemen pertama dalam objek observable_vector_base .

Sintaks

auto First();

Mengembalikan nilai

IIterator yang mewakili elemen pertama dalam objek observable_vector_base.

observable_vector_base::Fungsi GetAt

Mengambil elemen pada indeks yang ditentukan dalam objek observable_vector_base .

Sintaks

T GetAt(uint32_t const index) const;

Parameter

index Indeks elemen berbasis nol.

Mengembalikan nilai

Elemen pada indeks yang ditentukan dalam objek observable_vector_base .

observable_vector_base::GetMany (Fungsi getMany)

Mengambil kumpulan elemen dalam objek observable_vector_base yang dimulai pada indeks yang diberikan.

Sintaks

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

Parameter

startIndex Indeks elemen berbasis nol untuk memulai.

valuesArray_view untuk menyalin item.

Mengembalikan nilai

Nilai yang menunjukkan jumlah elemen yang diambil.

observable_vector_base::Fungsi GetView

Mengambil tampilan objek observable_vector_base yang tidak dapat diubah.

Sintaks

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

Mengembalikan nilai

IVectorView yang berisi tampilan observable_vector_base yang tidak dapat diubah.

fungsi observable_vector_base::IndexOf

Mengambil indeks elemen tertentu dalam objek observable_vector_base .

Sintaks

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

Parameter

value Elemen , dalam objek observable_vector_base , untuk mencari .

index Indeks berbasis nol dari elemen jika elemen ditemukan, jika tidak, jumlah elemen dalam objek observable_vector_base .

Mengembalikan nilai

true jika elemen ditemukan, jika tidak false.

observable_vector_base::InsertAt (Fungsi insertAt)

Menyisipkan elemen pada indeks yang ditentukan dalam objek observable_vector_base .

Sintaks

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

Parameter

index Indeks berbasis nol untuk menyisipkan elemen.

value Elemen yang akan disisipkan.

observable_vector_base::RemoveAt (Fungsi RemoveAt)

Menghapus elemen pada indeks yang ditentukan dalam objek observable_vector_base .

Sintaks

void RemoveAt(uint32_t const index);

Parameter

index Indeks berbasis nol dari elemen yang akan dihapus.

observable_vector_base::RemoveAtEnd (Fungsi RemoveAtEnd)

Menghapus elemen terakhir dari objek observable_vector_base .

Sintaks

void RemoveAtEnd();

observable_vector_base::ReplaceAll function

Mengganti semua elemen dalam objek observable_vector_base dengan elemen yang ditentukan.

Sintaks

void ReplaceAll(array_view<T const> value);

Parameter

valueArray_view yang berisi elemen baru.

fungsi observable_vector_base::SetAt

Mengatur nilai elemen pada indeks yang ditentukan dalam objek observable_vector_base .

Sintaks

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

Parameter

index Indeks berbasis nol dari elemen yang nilainya akan ditetapkan.

value Nilai elemen yang akan diatur.

observable_vector_base::Fungsi ukuran

Mengambil jumlah elemen dalam objek observable_vector_base .

Sintaks

uint32_t Size() const noexcept;

Mengembalikan nilai

Nilai yang menunjukkan jumlah elemen dalam objek observable_vector_base .

observable_vector_base::VectorChanged (Fungsi observable_vector_base::VectorChanged)

Mendaftarkan dan/atau mencabut delegasi yang menangani peristiwa yang diubah vektor objek observable_vector_base .

Sintaks

// 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;

Mengembalikan nilai

Baik void, winrt::event_token tempat Anda dapat mencabut delegasi terdaftar, atau VectorChanged_revoker (alias jenis untuk winrt::event_revoker<IObservableVector<T>>) tempat Anda dapat mencabut delegasi terdaftar.

Contoh

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

Lihat juga