Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
C++/WinRT ile çalışma zamanı sınıflarını kullanma ve yazma hakkında bilginizi destekleyen temel kavramlar ve terimler için bkz. C++/WinRT ile API'leri kullanma ve C++/WinRT ile API'leri yazma.
MeasureOverride ve OnApplyTemplate gibi geçersiz kılınabilir yöntemler uygulama
XAML'de uygulamanızın takabileceği bazı uzantı noktaları vardır, örneğin:
Control çalışma zamanı sınıfından bir özel denetim türetirsiniz; bu sınıfın kendisi de temel çalışma zamanı sınıflarından türetilmiştir. Ayrıca türetilmiş sınıfınızda geçersiz kılabileceğiniz overridable, FrameworkElement ve UIElement yöntemleri vardır. Bunu nasıl yapacağınızı gösteren bir kod örneği aşağıda verilmiştır.
struct BgLabelControl : BgLabelControlT<BgLabelControl>
{
...
// Control overrides.
void OnPointerPressed(Microsoft::UI::Xaml::Input::PointerRoutedEventArgs const& /* e */) const { ... };
// FrameworkElement overrides.
Windows::Foundation::Size MeasureOverride(Windows::Foundation::Size const& /* availableSize */) const { ... };
void OnApplyTemplate() const { ... };
// UIElement overrides.
Microsoft::UI::Xaml::Automation::Peers::AutomationPeer OnCreateAutomationPeer() const { ... };
...
};
Geçersiz kılınabilir yöntemler farklı dil projeksiyonlarında kendilerini farklı şekilde gösterir. Örneğin C# dilinde geçersiz kılınabilir yöntemler genellikle korumalı sanal yöntemler olarak görünür. C++/WinRT'de sanal veya korumalı değildir, ancak yine de bunları geçersiz kılabilir ve yukarıda gösterildiği gibi kendi uygulamanızı sağlayabilirsiniz.
C++/WinRT'de bu geçersiz kılınabilir yöntemlerden birini geçersiz kılıyorsanız, IDL'niz runtimeclass yöntemi bildirmemelidir. Gösterilen söz dizimi hakkında base_type daha fazla bilgi için bu konunun sonraki bölümüne bakın (Temel türünüzü çağırma).
IDL
namespace Example
{
runtimeclass CustomVSM : Microsoft.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::Microsoft::UI::Xaml::Controls::Control const& control, winrt::Microsoft::UI::Xaml::FrameworkElement const& templateRoot, winrt::hstring const& stateName, winrt::Microsoft::UI::Xaml::VisualStateGroup const& group, winrt::Microsoft::UI::Xaml::VisualState const& state, bool useTransitions) {
return base_type::GoToStateCore(control, templateRoot, stateName, group, state, useTransitions);
}
};
}
Temel türünüzü çağırmak
tür diğer adını base_typekullanarak temel türünüze erişebilir ve bu türdeki yöntemleri çağırabilirsiniz. Bunun bir örneğini önceki bölümde görmüştük; ancak herhangi bir temel sınıf üyesine erişmek için kullanabilirsiniz base_type (yalnızca geçersiz kılınan yöntemlere değil). Bir örnek aşağıda verilmiştir:
struct MyDerivedRuntimeClass : MyDerivedRuntimeClassT<MyDerivedRuntimeClass>
{
...
void Foo()
{
// Call my base type's Bar method.
base_type::Bar();
}
};
Önemli API'ler
Windows developer