// WARNING: Please don't edit this file. It was generated by Python/WinRT v3.2.1

#pragma once

#include "pybase.h"
static_assert(winrt::check_version(PYWINRT_VERSION, "3.2.1"), "Mismatched Py/WinRT headers.");
#include <winrt/Windows.ApplicationModel.h>
#include <winrt/Windows.ApplicationModel.Activation.h>
#include <winrt/Windows.ApplicationModel.Core.h>
#include <winrt/Windows.ApplicationModel.DataTransfer.h>
#include <winrt/Windows.ApplicationModel.DataTransfer.DragDrop.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Foundation.Numerics.h>
#include <winrt/Windows.Graphics.Imaging.h>
#include <winrt/Windows.UI.h>
#include <winrt/Windows.UI.Composition.h>
#include <winrt/Windows.UI.Core.h>
#include <winrt/Windows.UI.Input.h>
#include <winrt/Windows.UI.Xaml.Automation.Peers.h>
#include <winrt/Windows.UI.Xaml.Controls.h>
#include <winrt/Windows.UI.Xaml.Controls.Primitives.h>
#include <winrt/Windows.UI.Xaml.Data.h>
#include <winrt/Windows.UI.Xaml.Input.h>
#include <winrt/Windows.UI.Xaml.Interop.h>
#include <winrt/Windows.UI.Xaml.Media.h>
#include <winrt/Windows.UI.Xaml.Media.Animation.h>
#include <winrt/Windows.UI.Xaml.Media.Imaging.h>
#include <winrt/Windows.UI.Xaml.Media.Media3D.h>

#include <winrt/Windows.UI.Xaml.h>

namespace py::proj::Windows::UI::Xaml
{
}

namespace py
{
    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ApplicationHighContrastAdjustment> = "I";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ApplicationRequiresPointerMode> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ApplicationTheme> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::AutomationTextAttributesEnum> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::DurationType> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ElementHighContrastAdjustment> = "I";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ElementSoundKind> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ElementSoundMode> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ElementSoundPlayerState> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ElementSpatialAudioMode> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::ElementTheme> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FlowDirection> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FocusState> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FocusVisualKind> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontCapitals> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontEastAsianLanguage> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontEastAsianWidths> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontFraction> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontNumeralAlignment> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontNumeralStyle> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::FontVariants> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::GridUnitType> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::HorizontalAlignment> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::LineStackingStrategy> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::OpticalMarginAlignment> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::TextAlignment> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::TextLineBounds> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::TextReadingOrder> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::TextTrimming> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::TextWrapping> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::Vector3TransitionComponents> = "I";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::VerticalAlignment> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::Visibility> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::CornerRadius> = "T{d:top_left:d:top_right:d:bottom_right:d:bottom_left:}";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::Duration> = "T{T{q:duration:}:time_span:i:type:}";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::GridLength> = "T{d:value:i:grid_unit_type:}";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::UI::Xaml::Thickness> = "T{d:left:d:top:d:right:d:bottom:}";


    template<>
    struct py_type<winrt::Windows::UI::Xaml::ApplicationHighContrastAdjustment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ApplicationHighContrastAdjustment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ApplicationHighContrastAdjustment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ApplicationRequiresPointerMode>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ApplicationRequiresPointerMode";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ApplicationRequiresPointerMode";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ApplicationTheme>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ApplicationTheme";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ApplicationTheme";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::AutomationTextAttributesEnum>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.AutomationTextAttributesEnum";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "AutomationTextAttributesEnum";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DurationType>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DurationType";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DurationType";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementHighContrastAdjustment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementHighContrastAdjustment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementHighContrastAdjustment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementSoundKind>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementSoundKind";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementSoundKind";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementSoundMode>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementSoundMode";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementSoundMode";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementSoundPlayerState>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementSoundPlayerState";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementSoundPlayerState";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementSpatialAudioMode>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementSpatialAudioMode";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementSpatialAudioMode";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementTheme>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementTheme";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementTheme";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FlowDirection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FlowDirection";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FlowDirection";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FocusState>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FocusState";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FocusState";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FocusVisualKind>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FocusVisualKind";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FocusVisualKind";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontCapitals>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontCapitals";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontCapitals";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontEastAsianLanguage>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontEastAsianLanguage";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontEastAsianLanguage";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontEastAsianWidths>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontEastAsianWidths";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontEastAsianWidths";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontFraction>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontFraction";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontFraction";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontNumeralAlignment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontNumeralAlignment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontNumeralAlignment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontNumeralStyle>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontNumeralStyle";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontNumeralStyle";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FontVariants>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FontVariants";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FontVariants";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::GridUnitType>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.GridUnitType";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "GridUnitType";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::HorizontalAlignment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.HorizontalAlignment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "HorizontalAlignment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::LineStackingStrategy>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.LineStackingStrategy";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "LineStackingStrategy";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::OpticalMarginAlignment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.OpticalMarginAlignment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "OpticalMarginAlignment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TextAlignment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TextAlignment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TextAlignment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TextLineBounds>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TextLineBounds";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TextLineBounds";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TextReadingOrder>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TextReadingOrder";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TextReadingOrder";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TextTrimming>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TextTrimming";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TextTrimming";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TextWrapping>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TextWrapping";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TextWrapping";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Vector3TransitionComponents>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Vector3TransitionComponents";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Vector3TransitionComponents";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::VerticalAlignment>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.VerticalAlignment";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "VerticalAlignment";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Visibility>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Visibility";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Visibility";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::AdaptiveTrigger>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.AdaptiveTrigger";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "AdaptiveTrigger";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Application>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Application";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Application";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ApplicationInitializationCallbackParams>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ApplicationInitializationCallbackParams";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ApplicationInitializationCallbackParams";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::BindingFailedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.BindingFailedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "BindingFailedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::BringIntoViewOptions>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.BringIntoViewOptions";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "BringIntoViewOptions";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::BringIntoViewRequestedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.BringIntoViewRequestedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "BringIntoViewRequestedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::BrushTransition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.BrushTransition";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "BrushTransition";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ColorPaletteResources>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ColorPaletteResources";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ColorPaletteResources";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::CornerRadiusHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.CornerRadiusHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "CornerRadiusHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DataContextChangedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DataContextChangedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DataContextChangedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DataTemplate>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DataTemplate";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DataTemplate";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DataTemplateKey>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DataTemplateKey";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DataTemplateKey";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DebugSettings>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DebugSettings";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DebugSettings";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DependencyObject>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DependencyObject";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DependencyObject";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DependencyObjectCollection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DependencyObjectCollection";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DependencyObjectCollection";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DependencyProperty>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DependencyProperty";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DependencyProperty";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DependencyPropertyChangedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DependencyPropertyChangedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DependencyPropertyChangedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DispatcherTimer>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DispatcherTimer";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DispatcherTimer";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DragEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DragEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DragEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DragOperationDeferral>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DragOperationDeferral";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DragOperationDeferral";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DragStartingEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DragStartingEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DragStartingEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DragUI>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DragUI";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DragUI";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DragUIOverride>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DragUIOverride";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DragUIOverride";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DropCompletedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DropCompletedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DropCompletedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::DurationHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.DurationHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "DurationHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::EffectiveViewportChangedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.EffectiveViewportChangedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "EffectiveViewportChangedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementFactoryGetArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementFactoryGetArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementFactoryGetArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementFactoryRecycleArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementFactoryRecycleArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementFactoryRecycleArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ElementSoundPlayer>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ElementSoundPlayer";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ElementSoundPlayer";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::EventTrigger>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.EventTrigger";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "EventTrigger";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ExceptionRoutedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ExceptionRoutedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ExceptionRoutedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FrameworkElement>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FrameworkElement";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FrameworkElement";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FrameworkTemplate>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FrameworkTemplate";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FrameworkTemplate";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FrameworkView>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FrameworkView";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FrameworkView";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::FrameworkViewSource>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.FrameworkViewSource";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "FrameworkViewSource";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::GridLengthHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.GridLengthHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "GridLengthHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::MediaFailedRoutedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.MediaFailedRoutedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "MediaFailedRoutedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::PointHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.PointHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "PointHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::PropertyMetadata>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.PropertyMetadata";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "PropertyMetadata";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::PropertyPath>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.PropertyPath";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "PropertyPath";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::RectHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.RectHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "RectHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ResourceDictionary>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ResourceDictionary";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ResourceDictionary";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::RoutedEvent>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.RoutedEvent";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "RoutedEvent";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::RoutedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.RoutedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "RoutedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ScalarTransition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ScalarTransition";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ScalarTransition";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Setter>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Setter";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Setter";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::SetterBase>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.SetterBase";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "SetterBase";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::SetterBaseCollection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.SetterBaseCollection";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "SetterBaseCollection";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::SizeChangedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.SizeChangedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "SizeChangedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::SizeHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.SizeHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "SizeHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::StateTrigger>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.StateTrigger";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "StateTrigger";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::StateTriggerBase>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.StateTriggerBase";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "StateTriggerBase";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Style>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Style";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Style";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TargetPropertyPath>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TargetPropertyPath";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TargetPropertyPath";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::ThicknessHelper>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.ThicknessHelper";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "ThicknessHelper";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TriggerAction>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TriggerAction";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TriggerAction";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TriggerActionCollection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TriggerActionCollection";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TriggerActionCollection";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TriggerBase>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TriggerBase";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TriggerBase";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::TriggerCollection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.TriggerCollection";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "TriggerCollection";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::UIElement>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.UIElement";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "UIElement";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::UIElementWeakCollection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.UIElementWeakCollection";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "UIElementWeakCollection";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::UnhandledExceptionEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.UnhandledExceptionEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "UnhandledExceptionEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Vector3Transition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Vector3Transition";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Vector3Transition";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::VisualState>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.VisualState";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "VisualState";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::VisualStateChangedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.VisualStateChangedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "VisualStateChangedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::VisualStateGroup>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.VisualStateGroup";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "VisualStateGroup";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::VisualStateManager>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.VisualStateManager";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "VisualStateManager";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::VisualTransition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.VisualTransition";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "VisualTransition";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Window>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Window";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Window";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::WindowCreatedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.WindowCreatedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "WindowCreatedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::XamlRoot>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.XamlRoot";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "XamlRoot";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::XamlRootChangedEventArgs>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.XamlRootChangedEventArgs";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "XamlRootChangedEventArgs";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::IDataTemplateExtension>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml._IDataTemplateExtension";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "_IDataTemplateExtension";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::IElementFactory>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml._IElementFactory";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "_IElementFactory";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::CornerRadius>
    {
        static constexpr std::string_view from_tuple = "winrt._winrt_windows_ui_xaml.CornerRadius_from_tuple";
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.CornerRadius";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "CornerRadius";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Duration>
    {
        static constexpr std::string_view from_tuple = "winrt._winrt_windows_ui_xaml.Duration_from_tuple";
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Duration";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Duration";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::GridLength>
    {
        static constexpr std::string_view from_tuple = "winrt._winrt_windows_ui_xaml.GridLength_from_tuple";
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.GridLength";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "GridLength";
    };

    template<>
    struct py_type<winrt::Windows::UI::Xaml::Thickness>
    {
        static constexpr std::string_view from_tuple = "winrt._winrt_windows_ui_xaml.Thickness_from_tuple";
        static constexpr std::string_view qualified_name = "winrt.windows.ui.xaml.Thickness";
        static constexpr const char* module_name = "winrt.windows.ui.xaml";
        static constexpr const char* type_name = "Thickness";
    };
}

#if __has_include("py.Windows.ApplicationModel.h")
#include "py.Windows.ApplicationModel.h"
#endif

#if __has_include("py.Windows.ApplicationModel.Activation.h")
#include "py.Windows.ApplicationModel.Activation.h"
#endif

#if __has_include("py.Windows.ApplicationModel.Core.h")
#include "py.Windows.ApplicationModel.Core.h"
#endif

#if __has_include("py.Windows.ApplicationModel.DataTransfer.h")
#include "py.Windows.ApplicationModel.DataTransfer.h"
#endif

#if __has_include("py.Windows.ApplicationModel.DataTransfer.DragDrop.h")
#include "py.Windows.ApplicationModel.DataTransfer.DragDrop.h"
#endif

#if __has_include("py.Windows.Foundation.h")
#include "py.Windows.Foundation.h"
#endif

#if __has_include("py.Windows.Foundation.Collections.h")
#include "py.Windows.Foundation.Collections.h"
#endif

#if __has_include("py.Windows.Foundation.Numerics.h")
#include "py.Windows.Foundation.Numerics.h"
#endif

#if __has_include("py.Windows.Graphics.Imaging.h")
#include "py.Windows.Graphics.Imaging.h"
#endif

#if __has_include("py.Windows.UI.h")
#include "py.Windows.UI.h"
#endif

#if __has_include("py.Windows.UI.Composition.h")
#include "py.Windows.UI.Composition.h"
#endif

#if __has_include("py.Windows.UI.Core.h")
#include "py.Windows.UI.Core.h"
#endif

#if __has_include("py.Windows.UI.Input.h")
#include "py.Windows.UI.Input.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Automation.Peers.h")
#include "py.Windows.UI.Xaml.Automation.Peers.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Controls.h")
#include "py.Windows.UI.Xaml.Controls.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Controls.Primitives.h")
#include "py.Windows.UI.Xaml.Controls.Primitives.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Data.h")
#include "py.Windows.UI.Xaml.Data.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Input.h")
#include "py.Windows.UI.Xaml.Input.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Interop.h")
#include "py.Windows.UI.Xaml.Interop.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Media.h")
#include "py.Windows.UI.Xaml.Media.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Media.Animation.h")
#include "py.Windows.UI.Xaml.Media.Animation.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Media.Imaging.h")
#include "py.Windows.UI.Xaml.Media.Imaging.h"
#endif

#if __has_include("py.Windows.UI.Xaml.Media.Media3D.h")
#include "py.Windows.UI.Xaml.Media.Media3D.h"
#endif

namespace py::impl::Windows::UI::Xaml
{
    struct ApplicationInitializationCallback
    {
        static winrt::Windows::UI::Xaml::ApplicationInitializationCallback get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::UI::Xaml::ApplicationInitializationCallbackParams const& param0)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallOneArg(delegate.callable(), py_param0.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct BindingFailedEventHandler
    {
        static winrt::Windows::UI::Xaml::BindingFailedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::BindingFailedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct CreateDefaultValueCallback
    {
        static winrt::Windows::UI::Xaml::CreateDefaultValueCallback get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)]()
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle return_value{PyObject_CallNoArgs(delegate.callable())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }

                    return py::convert_to<winrt::Windows::Foundation::IInspectable>(return_value.get());
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct DependencyPropertyChangedCallback
    {
        static winrt::Windows::UI::Xaml::DependencyPropertyChangedCallback get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::UI::Xaml::DependencyObject const& param0, winrt::Windows::UI::Xaml::DependencyProperty const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct DependencyPropertyChangedEventHandler
    {
        static winrt::Windows::UI::Xaml::DependencyPropertyChangedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::DependencyPropertyChangedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct DragEventHandler
    {
        static winrt::Windows::UI::Xaml::DragEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::DragEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct EnteredBackgroundEventHandler
    {
        static winrt::Windows::UI::Xaml::EnteredBackgroundEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::ApplicationModel::EnteredBackgroundEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct ExceptionRoutedEventHandler
    {
        static winrt::Windows::UI::Xaml::ExceptionRoutedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::ExceptionRoutedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct LeavingBackgroundEventHandler
    {
        static winrt::Windows::UI::Xaml::LeavingBackgroundEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::ApplicationModel::LeavingBackgroundEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct PropertyChangedCallback
    {
        static winrt::Windows::UI::Xaml::PropertyChangedCallback get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::UI::Xaml::DependencyObject const& param0, winrt::Windows::UI::Xaml::DependencyPropertyChangedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct RoutedEventHandler
    {
        static winrt::Windows::UI::Xaml::RoutedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::RoutedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct SizeChangedEventHandler
    {
        static winrt::Windows::UI::Xaml::SizeChangedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::SizeChangedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct SuspendingEventHandler
    {
        static winrt::Windows::UI::Xaml::SuspendingEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::ApplicationModel::SuspendingEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct UnhandledExceptionEventHandler
    {
        static winrt::Windows::UI::Xaml::UnhandledExceptionEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::UnhandledExceptionEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct VisualStateChangedEventHandler
    {
        static winrt::Windows::UI::Xaml::VisualStateChangedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Xaml::VisualStateChangedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct WindowActivatedEventHandler
    {
        static winrt::Windows::UI::Xaml::WindowActivatedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Core::WindowActivatedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct WindowClosedEventHandler
    {
        static winrt::Windows::UI::Xaml::WindowClosedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Core::CoreWindowEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct WindowSizeChangedEventHandler
    {
        static winrt::Windows::UI::Xaml::WindowSizeChangedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Core::WindowSizeChangedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };

    struct WindowVisibilityChangedEventHandler
    {
        static winrt::Windows::UI::Xaml::WindowVisibilityChangedEventHandler get(PyObject* callable)
        {
            py::delegate_callable _delegate{ callable };

            return [delegate = std::move(_delegate)](winrt::Windows::Foundation::IInspectable const& param0, winrt::Windows::UI::Core::VisibilityChangedEventArgs const& param1)
            {
                auto gil = py::ensure_gil();

                try
                {
                    py::pyobj_handle py_param0{py::convert(param0)};
                    if (!py_param0)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle py_param1{py::convert(param1)};
                    if (!py_param1)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle args{PyTuple_Pack(2, py_param0.get(), py_param1.get())};
                    if (!args)
                    {
                        throw python_exception();
                    }

                    py::pyobj_handle return_value{PyObject_CallObject(delegate.callable(), args.get())};
                    if (!return_value)
                    {
                        throw python_exception();
                    }
                }
                catch (python_exception)
                {
                    py::write_unraisable_and_throw();
                }
            };
        };
    };
}

namespace py::wrapper::Windows::UI::Xaml
{
    using AdaptiveTrigger = py::winrt_wrapper<winrt::Windows::UI::Xaml::AdaptiveTrigger>;
    using Application = py::winrt_wrapper<winrt::Windows::UI::Xaml::Application>;
    using ApplicationInitializationCallbackParams = py::winrt_wrapper<winrt::Windows::UI::Xaml::ApplicationInitializationCallbackParams>;
    using BindingFailedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::BindingFailedEventArgs>;
    using BringIntoViewOptions = py::winrt_wrapper<winrt::Windows::UI::Xaml::BringIntoViewOptions>;
    using BringIntoViewRequestedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::BringIntoViewRequestedEventArgs>;
    using BrushTransition = py::winrt_wrapper<winrt::Windows::UI::Xaml::BrushTransition>;
    using ColorPaletteResources = py::winrt_wrapper<winrt::Windows::UI::Xaml::ColorPaletteResources>;
    using CornerRadiusHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::CornerRadiusHelper>;
    using DataContextChangedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::DataContextChangedEventArgs>;
    using DataTemplate = py::winrt_wrapper<winrt::Windows::UI::Xaml::DataTemplate>;
    using DataTemplateKey = py::winrt_wrapper<winrt::Windows::UI::Xaml::DataTemplateKey>;
    using DebugSettings = py::winrt_wrapper<winrt::Windows::UI::Xaml::DebugSettings>;
    using DependencyObject = py::winrt_wrapper<winrt::Windows::UI::Xaml::DependencyObject>;
    using DependencyObjectCollection = py::winrt_wrapper<winrt::Windows::UI::Xaml::DependencyObjectCollection>;
    using DependencyProperty = py::winrt_wrapper<winrt::Windows::UI::Xaml::DependencyProperty>;
    using DependencyPropertyChangedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::DependencyPropertyChangedEventArgs>;
    using DispatcherTimer = py::winrt_wrapper<winrt::Windows::UI::Xaml::DispatcherTimer>;
    using DragEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::DragEventArgs>;
    using DragOperationDeferral = py::winrt_wrapper<winrt::Windows::UI::Xaml::DragOperationDeferral>;
    using DragStartingEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::DragStartingEventArgs>;
    using DragUI = py::winrt_wrapper<winrt::Windows::UI::Xaml::DragUI>;
    using DragUIOverride = py::winrt_wrapper<winrt::Windows::UI::Xaml::DragUIOverride>;
    using DropCompletedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::DropCompletedEventArgs>;
    using DurationHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::DurationHelper>;
    using EffectiveViewportChangedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::EffectiveViewportChangedEventArgs>;
    using ElementFactoryGetArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::ElementFactoryGetArgs>;
    using ElementFactoryRecycleArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::ElementFactoryRecycleArgs>;
    using ElementSoundPlayer = py::winrt_wrapper<winrt::Windows::UI::Xaml::ElementSoundPlayer>;
    using EventTrigger = py::winrt_wrapper<winrt::Windows::UI::Xaml::EventTrigger>;
    using ExceptionRoutedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::ExceptionRoutedEventArgs>;
    using FrameworkElement = py::winrt_wrapper<winrt::Windows::UI::Xaml::FrameworkElement>;
    using FrameworkTemplate = py::winrt_wrapper<winrt::Windows::UI::Xaml::FrameworkTemplate>;
    using FrameworkView = py::winrt_wrapper<winrt::Windows::UI::Xaml::FrameworkView>;
    using FrameworkViewSource = py::winrt_wrapper<winrt::Windows::UI::Xaml::FrameworkViewSource>;
    using GridLengthHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::GridLengthHelper>;
    using MediaFailedRoutedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::MediaFailedRoutedEventArgs>;
    using PointHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::PointHelper>;
    using PropertyMetadata = py::winrt_wrapper<winrt::Windows::UI::Xaml::PropertyMetadata>;
    using PropertyPath = py::winrt_wrapper<winrt::Windows::UI::Xaml::PropertyPath>;
    using RectHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::RectHelper>;
    using ResourceDictionary = py::winrt_wrapper<winrt::Windows::UI::Xaml::ResourceDictionary>;
    using RoutedEvent = py::winrt_wrapper<winrt::Windows::UI::Xaml::RoutedEvent>;
    using RoutedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::RoutedEventArgs>;
    using ScalarTransition = py::winrt_wrapper<winrt::Windows::UI::Xaml::ScalarTransition>;
    using Setter = py::winrt_wrapper<winrt::Windows::UI::Xaml::Setter>;
    using SetterBase = py::winrt_wrapper<winrt::Windows::UI::Xaml::SetterBase>;
    using SetterBaseCollection = py::winrt_wrapper<winrt::Windows::UI::Xaml::SetterBaseCollection>;
    using SizeChangedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::SizeChangedEventArgs>;
    using SizeHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::SizeHelper>;
    using StateTrigger = py::winrt_wrapper<winrt::Windows::UI::Xaml::StateTrigger>;
    using StateTriggerBase = py::winrt_wrapper<winrt::Windows::UI::Xaml::StateTriggerBase>;
    using Style = py::winrt_wrapper<winrt::Windows::UI::Xaml::Style>;
    using TargetPropertyPath = py::winrt_wrapper<winrt::Windows::UI::Xaml::TargetPropertyPath>;
    using ThicknessHelper = py::winrt_wrapper<winrt::Windows::UI::Xaml::ThicknessHelper>;
    using TriggerAction = py::winrt_wrapper<winrt::Windows::UI::Xaml::TriggerAction>;
    using TriggerActionCollection = py::winrt_wrapper<winrt::Windows::UI::Xaml::TriggerActionCollection>;
    using TriggerBase = py::winrt_wrapper<winrt::Windows::UI::Xaml::TriggerBase>;
    using TriggerCollection = py::winrt_wrapper<winrt::Windows::UI::Xaml::TriggerCollection>;
    using UIElement = py::winrt_wrapper<winrt::Windows::UI::Xaml::UIElement>;
    using UIElementWeakCollection = py::winrt_wrapper<winrt::Windows::UI::Xaml::UIElementWeakCollection>;
    using UnhandledExceptionEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::UnhandledExceptionEventArgs>;
    using Vector3Transition = py::winrt_wrapper<winrt::Windows::UI::Xaml::Vector3Transition>;
    using VisualState = py::winrt_wrapper<winrt::Windows::UI::Xaml::VisualState>;
    using VisualStateChangedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::VisualStateChangedEventArgs>;
    using VisualStateGroup = py::winrt_wrapper<winrt::Windows::UI::Xaml::VisualStateGroup>;
    using VisualStateManager = py::winrt_wrapper<winrt::Windows::UI::Xaml::VisualStateManager>;
    using VisualTransition = py::winrt_wrapper<winrt::Windows::UI::Xaml::VisualTransition>;
    using Window = py::winrt_wrapper<winrt::Windows::UI::Xaml::Window>;
    using WindowCreatedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::WindowCreatedEventArgs>;
    using XamlRoot = py::winrt_wrapper<winrt::Windows::UI::Xaml::XamlRoot>;
    using XamlRootChangedEventArgs = py::winrt_wrapper<winrt::Windows::UI::Xaml::XamlRootChangedEventArgs>;
    using IDataTemplateExtension = py::winrt_wrapper<winrt::Windows::UI::Xaml::IDataTemplateExtension>;
    using IElementFactory = py::winrt_wrapper<winrt::Windows::UI::Xaml::IElementFactory>;
    using CornerRadius = py::winrt_struct_wrapper<winrt::Windows::UI::Xaml::CornerRadius>;
    using Duration = py::winrt_struct_wrapper<winrt::Windows::UI::Xaml::Duration>;
    using GridLength = py::winrt_struct_wrapper<winrt::Windows::UI::Xaml::GridLength>;
    using Thickness = py::winrt_struct_wrapper<winrt::Windows::UI::Xaml::Thickness>;
}

namespace py
{
    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::ApplicationInitializationCallback>
    {
        using type = py::impl::Windows::UI::Xaml::ApplicationInitializationCallback;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::BindingFailedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::BindingFailedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::CreateDefaultValueCallback>
    {
        using type = py::impl::Windows::UI::Xaml::CreateDefaultValueCallback;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::DependencyPropertyChangedCallback>
    {
        using type = py::impl::Windows::UI::Xaml::DependencyPropertyChangedCallback;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::DependencyPropertyChangedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::DependencyPropertyChangedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::DragEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::DragEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::EnteredBackgroundEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::EnteredBackgroundEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::ExceptionRoutedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::ExceptionRoutedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::LeavingBackgroundEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::LeavingBackgroundEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::PropertyChangedCallback>
    {
        using type = py::impl::Windows::UI::Xaml::PropertyChangedCallback;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::RoutedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::RoutedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::SizeChangedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::SizeChangedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::SuspendingEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::SuspendingEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::UnhandledExceptionEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::UnhandledExceptionEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::VisualStateChangedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::VisualStateChangedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::WindowActivatedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::WindowActivatedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::WindowClosedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::WindowClosedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::WindowSizeChangedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::WindowSizeChangedEventHandler;
    };

    template <>
    struct delegate_python_type<winrt::Windows::UI::Xaml::WindowVisibilityChangedEventHandler>
    {
        using type = py::impl::Windows::UI::Xaml::WindowVisibilityChangedEventHandler;
    };

}
