Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Zie API's gebruiken met C++/WinRT en API's ontwerpen met C++/WinRTvoor essentiële concepten en termen die ondersteuning bieden voor het begrijpen van het consumeren en ontwerpen van runtimeklassen met C++/WinRT.
Het implementeren van overschrijfbare methoden, zoals MeasureOverride- en OnApplyTemplate-
Er zijn enkele uitbreidingspunten in XAML waarmee uw toepassing kan worden aangesloten, bijvoorbeeld:
U hebt een aangepast besturingselement afgeleid van de Control runtime-klasse, die zelf verder wordt afgeleid van basisruntimeklassen. En er zijn overridable
methoden voor Control, FrameworkElementen UIElement die u kunt overschrijven in uw afgeleide klasse. Hier volgt een codevoorbeeld waarin u ziet hoe u dit doet.
struct BgLabelControl : BgLabelControlT<BgLabelControl>
{
...
// Control overrides.
void OnPointerPressed(Windows::UI::Xaml::Input::PointerRoutedEventArgs const& /* e */) const { ... };
// FrameworkElement overrides.
Windows::Foundation::Size MeasureOverride(Windows::Foundation::Size const& /* availableSize */) const { ... };
void OnApplyTemplate() const { ... };
// UIElement overrides.
Windows::UI::Xaml::Automation::Peers::AutomationPeer OnCreateAutomationPeer() const { ... };
...
};
overschrijfbare methoden presenteren zich anders in verschillende taalprojecties. In C# worden bijvoorbeeld overschrijfbare methoden meestal weergegeven als beveiligde virtuele methoden. In C++/WinRT zijn ze niet virtueel of beveiligd, maar u kunt ze nog steeds overschrijven en uw eigen implementatie bieden, zoals hierboven wordt weergegeven.
Als u een van deze overschrijfbare methoden in C++/WinRT overschrijft, moet uw runtimeclass
IDL de methode niet declareren. Zie de volgende sectie in dit onderwerp (base_type
voor meer informatie over de weergegeven syntaxis.
IDL
namespace Example
{
runtimeclass CustomVSM : Windows.UI.Xaml.VisualStateManager
{
CustomVSM();
// note that we don't declare GoToStateCore here
}
}
C++/WinRT
namespace winrt::Example::implementation
{
struct CustomVSM : CustomVSMT<CustomVSM>
{
CustomVSM() {}
bool GoToStateCore(winrt::Windows::UI::Xaml::Controls::Control const& control, winrt::Windows::UI::Xaml::FrameworkElement const& templateRoot, winrt::hstring const& stateName, winrt::Windows::UI::Xaml::VisualStateGroup const& group, winrt::Windows::UI::Xaml::VisualState const& state, bool useTransitions) {
return base_type::GoToStateCore(control, templateRoot, stateName, group, state, useTransitions);
}
};
}
Uw basistype aanroepen
U kunt toegang krijgen tot uw basistype en methoden hierop aanroepen met behulp van de typealias base_type
. We hebben een voorbeeld hiervan gezien in de vorige sectie; maar u kunt met base_type
toegang krijgen tot elk lid van de basisklasse (niet alleen overschreven methoden). Hier is een voorbeeld:
struct MyDerivedRuntimeClass : MyDerivedRuntimeClassT<MyDerivedRuntimeClass>
{
...
void Foo()
{
// Call my base type's Bar method.
base_type::Bar();
}
};