Plantilla de estructura winrt::observable_vector_base (C++/WinRT)
Una clase base de la que se puede derivar para implementar su propio vector observable personalizado. Para obtener más información y ejemplos de código, consulta Colecciones con C++/WinRT.
Sintaxis
template <typename D, typename T>
struct observable_vector_base : vector_base<D, T>
Parámetros de plantilla
typename D
El nombre del tipo derivado.
typename T
Tipo de los elementos del observable_vector_base.
Requisitos
SDK mínimo admitido: sdk de Windows versión 10.0.17763.0 (Windows 10, versión 1809)
Espacio de nombres: winrt
Encabezado: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluido de forma predeterminada)
Funciones miembro
Función | Descripción |
---|---|
observable_vector_base::Append (Función) | Anexa un elemento al final del objeto observable_vector_base . |
observable_vector_base::Clear (función) | Quita todos los elementos del objeto observable_vector_base . |
observable_vector_base::First (Función) | Recupera un IIterator que representa el primer elemento del objeto observable_vector_base . |
observable_vector_base::GetAt (Función) | Recupera el elemento en el índice especificado del objeto observable_vector_base . |
observable_vector_base::GetMany (Función) | Recupera una colección de elementos del objeto observable_vector_base que comienza en el índice especificado. |
observable_vector_base::GetView (Función) | Recupera una vista inmutable del objeto observable_vector_base . |
observable_vector_base::IndexOf (Función) | Recupera el índice de un elemento especificado en el objeto observable_vector_base . |
observable_vector_base::InsertAt (Función) | Inserta un elemento en el índice especificado en el objeto observable_vector_base . |
observable_vector_base::RemoveAt (Función) | Quita el elemento en el índice especificado del objeto observable_vector_base . |
observable_vector_base::RemoveAtEnd (Función) | Quita el último elemento del objeto observable_vector_base . |
observable_vector_base::ReplaceAll (Función) | Reemplaza todos los elementos del objeto observable_vector_base por los elementos especificados. |
observable_vector_base::SetAt (Función) | Establece el valor del elemento en el índice especificado del objeto observable_vector_base . |
observable_vector_base::Size (Función) | Recupera el número de elementos del objeto observable_vector_base . |
observable_vector_base::VectorChanged (Función) | Registra y revoca un delegado que controla el evento modificado por vectores del objeto observable_vector_base . |
Iterators
Un observable_vector_base es un intervalo y ese intervalo se define mediante funciones libres internas (cada una de las cuales recupera un iterador) que son compatibles con las características de lenguaje estándar. Por este motivo, puede enumerar los elementos de un objeto observable_vector_base con una instrucción basada en for
intervalos.
También puede recuperar un IIterator de la función observable_vector_base::First y usarlo para recorrer en iteración los elementos de un objeto 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::Append (Función)
Anexa un elemento al final del objeto observable_vector_base .
Sintaxis
void Append(T const& value);
Parámetros
value
Elemento que se va a anexar.
observable_vector_base::Clear (función)
Quita todos los elementos del objeto observable_vector_base .
Sintaxis
void Clear() noexcept;
observable_vector_base::First (Función)
Recupera un IIterator que representa el primer elemento del objeto observable_vector_base .
Sintaxis
auto First();
Valor devuelto
IIterator que representa el primer elemento del objeto observable_vector_base.
observable_vector_base::GetAt (Función)
Recupera el elemento en el índice especificado del objeto observable_vector_base .
Sintaxis
T GetAt(uint32_t const index) const;
Parámetros
index
Índice de elemento de base cero.
Valor devuelto
Elemento del índice especificado en el objeto observable_vector_base .
observable_vector_base::GetMany (Función)
Recupera una colección de elementos del objeto observable_vector_base que comienza en el índice especificado.
Sintaxis
uint32_t GetMany(uint32_t const startIndex, array_view<T> values) const;
Parámetros
startIndex
Índice de elemento de base cero en el que empezar.
values
Un array_view en el que copiar los elementos.
Valor devuelto
Valor que representa el número de elementos recuperados.
observable_vector_base::GetView (Función)
Recupera una vista inmutable del objeto observable_vector_base .
Sintaxis
winrt::Windows::Foundation::Collections::IVectorView<T> GetView() const noexcept;
Valor devuelto
IVectorView que contiene una vista inmutable de la observable_vector_base.
observable_vector_base::IndexOf (Función)
Recupera el índice de un elemento especificado en el objeto observable_vector_base .
Sintaxis
bool IndexOf(T const& value, uint32_t& index) const noexcept;
Parámetros
value
Elemento, en el objeto observable_vector_base , que se va a buscar.
index
Índice de base cero del elemento si se encuentra el elemento; de lo contrario, el número de elementos del objeto observable_vector_base .
Valor devuelto
true
es si se encuentra el elemento ; de lo contrario false
, es .
observable_vector_base::InsertAt (Función)
Inserta un elemento en el índice especificado en el objeto observable_vector_base .
Sintaxis
void InsertAt(uint32_t const index, T const& value);
Parámetros
index
Índice de base cero en el que se va a insertar el elemento.
value
Elemento que se va a insertar.
observable_vector_base::RemoveAt (Función)
Quita el elemento en el índice especificado del objeto observable_vector_base .
Sintaxis
void RemoveAt(uint32_t const index);
Parámetros
index
Índice de base cero del elemento que se va a quitar.
función observable_vector_base::RemoveAtEnd
Quita el último elemento del objeto observable_vector_base .
Sintaxis
void RemoveAtEnd();
observable_vector_base::ReplaceAll (Función)
Reemplaza todos los elementos del objeto observable_vector_base por los elementos especificados.
Sintaxis
void ReplaceAll(array_view<T const> value);
Parámetros
value
Un array_view que contiene los nuevos elementos.
función observable_vector_base::SetAt
Establece el valor del elemento en el índice especificado del objeto observable_vector_base .
Sintaxis
void SetAt(uint32_t const index, T const& value);
Parámetros
index
Índice de base cero del elemento cuyo valor se va a establecer.
value
Valor de elemento que se va a establecer.
función observable_vector_base::Size
Recupera el número de elementos del objeto observable_vector_base .
Sintaxis
uint32_t Size() const noexcept;
Valor devuelto
Valor que representa el número de elementos del objeto observable_vector_base .
función observable_vector_base::VectorChanged
Registra o revoca un delegado que controla el evento modificado por vectores del objeto observable_vector_base .
Sintaxis
// 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;
Valor devuelto
, void
un winrt::event_token con el que se puede revocar un delegado registrado o un VectorChanged_revoker (un alias de tipo para un winrt::event_revoker< IObservableVectorT<>>) con el que se puede revocar un delegado registrado.
Ejemplo
winrt::event_revoker<IObservableVector<float>> m_event_revoker;
...
m_event_revoker = coll.VectorChanged(winrt::auto_revoke, [this](IObservableVector<float> const&, IVectorChangedEventArgs const&)
{
...
});