Un control personalizado se deriva de la clase de tiempo de ejecución {Control, que a su vez se deriva de las clases base de tiempo de ejecución. Además, hay métodos overridable de Control, FrameworkElement y UIElement que se pueden reemplazar en la clase derivada. Este es un ejemplo de código que muestra cómo hacerlo.
Los métodos reemplazables se presentan de forma diferente en las distintas proyecciones de lenguaje. En C#, por ejemplo, los métodos reemplazables suelen aparecen como métodos virtuales protegidos. En C++/WinRT, no son ni virtuales ni protegidas, pero aun así puedes reemplazarlas y proporcionar tu propia implementación, tal y como se indicó anteriormente.
Si se va a reemplazar uno de estos métodos reemplazables en C++ o WinRT, el IDL de runtimeclass no debe declarar el método. Para obtener más información sobre la sintaxis base_type que se muestra, consulte la sección siguiente de este tema (Llamada al tipo base).
IDL
ìdl
namespace Example
{
runtimeclass CustomVSM : Windows.UI.Xaml.VisualStateManager
{
CustomVSM();
// note that we don't declare GoToStateCore here
}
}
Puede acceder al tipo base y llamar a métodos del mismo mediante el alias de tipo base_type. Hemos visto un ejemplo de esto en la sección anterior; pero puede usar base_type para tener acceso a cualquier miembro de clase base (no solo métodos invalidados). Este es un ejemplo:
C++/WinRT
structMyDerivedRuntimeClass : MyDerivedRuntimeClassT<MyDerivedRuntimeClass>
{
...
voidFoo(){
// Call my base type's Bar method.
base_type::Bar();
}
};
Obtenga información sobre cómo crear una jerarquía de clases mediante clases base y derivadas y cómo ocultar o invalidar miembros de una clase derivada mediante palabras clave "new", "virtual", "abstract" y "override".