//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0008
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.UI.Xaml.idl";
import "Windows.UI.Xaml.Interop.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Eui2Examl_h__)")
cpp_quote("#include <Windows.UI.Xaml.h>")
cpp_quote("#endif // !defined(__windows2Eui2Examl_h__)")
cpp_quote("#if !defined(__windows2Eui2Examl2Einterop_h__)")
cpp_quote("#include <Windows.UI.Xaml.Interop.h>")
cpp_quote("#endif // !defined(__windows2Eui2Examl2Einterop_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass DependencyObject;

            runtimeclass DependencyProperty;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Interop
            {
                typedef struct TypeName TypeName;
            }
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass PropertyPath;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Data
            {
                typedef enum BindingMode BindingMode;

                typedef enum RelativeSourceMode RelativeSourceMode;

                typedef struct LoadMoreItemsResult LoadMoreItemsResult;

                delegate CurrentChangingEventHandler;

                delegate PropertyChangedEventHandler;

                interface IPropertyChangedEventArgs;

                interface IPropertyChangedEventArgsFactory;

                interface INotifyPropertyChanged;

                interface IRelativeSource;

                interface IRelativeSourceFactory;

                interface IValueConverter;

                interface IBindingBase;

                interface IBindingBaseFactory;

                interface IBinding;

                interface IBindingFactory;

                interface ICurrentChangingEventArgs;

                interface ICurrentChangingEventArgsFactory;

                interface ICollectionView;

                interface ICollectionViewGroup;

                interface ICollectionViewSource;

                interface ICollectionViewSourceStatics;

                interface IBindingOperations;

                interface IBindingOperationsStatics;

                interface ICustomProperty;

                interface ICustomPropertyProvider;

                interface ISupportIncrementalLoading;

                interface ICollectionViewFactory;

                runtimeclass CurrentChangingEventArgs;

                runtimeclass PropertyChangedEventArgs;

                runtimeclass RelativeSource;

                runtimeclass BindingBase;

                runtimeclass Binding;

                runtimeclass CollectionViewSource;

                runtimeclass BindingOperations;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Data
            {
                declare
                {
                    interface Windows.Foundation.IAsyncOperation<Windows.UI.Xaml.Data.LoadMoreItemsResult>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Data
            {
                [version(0x06020000)]
                enum BindingMode
                {
                    OneWay  = 1,
                    OneTime = 2,
                    TwoWay  = 3
                };

                [version(0x06020000)]
                enum RelativeSourceMode
                {
                    None            = 0,
                    TemplatedParent = 1,
                    Self            = 2
                };

                [version(0x06020000)]
                struct LoadMoreItemsResult
                {
                    UINT32 Count;
                };

                [uuid(F3888DB8-139F-4DCE-8DC9-F7F1444D1185)]
                [version(0x06020000)]
                delegate
                    HRESULT CurrentChangingEventHandler([in] IInspectable* sender, [in] Windows.UI.Xaml.Data.CurrentChangingEventArgs* e);

                [uuid(50F19C16-0A22-4D8E-A089-1EA9951657D2)]
                [version(0x06020000)]
                delegate
                    HRESULT PropertyChangedEventHandler([in] IInspectable* sender, [in] Windows.UI.Xaml.Data.PropertyChangedEventArgs* e);

                [uuid(4F33A9A0-5CF4-47A4-B16F-D7FAAF17457E)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.PropertyChangedEventArgs)]
                interface IPropertyChangedEventArgs : IInspectable
                {
                    [propget] HRESULT PropertyName([out] [retval] HSTRING* value);
                }

                [uuid(6DCC9C03-E0C7-4EEE-8EA9-37E3406EEB1C)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.PropertyChangedEventArgs)]
                interface IPropertyChangedEventArgsFactory : IInspectable
                {
                    HRESULT CreateInstance([in] HSTRING name, [in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Data.PropertyChangedEventArgs** instance);
                }

                [uuid(CF75D69C-F2F4-486B-B302-BB4C09BAEBFA)]
                [version(0x06020000)]
                interface INotifyPropertyChanged : IInspectable
                {
                    [eventadd] HRESULT PropertyChanged([in] Windows.UI.Xaml.Data.PropertyChangedEventHandler* value, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT PropertyChanged([in] EventRegistrationToken token);
                }

                [uuid(2397CE84-2822-483A-B499-D0F031E06C6B)]
                [exclusiveto(Windows.UI.Xaml.Data.RelativeSource)]
                [version(0x06020000)]
                interface IRelativeSource : IInspectable
                {
                    [propget] HRESULT Mode([out] [retval] Windows.UI.Xaml.Data.RelativeSourceMode* value);
                    [propput] HRESULT Mode([in] Windows.UI.Xaml.Data.RelativeSourceMode value);
                }

                [uuid(EF8392CD-446E-4F93-AACB-9B1255577460)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.RelativeSource)]
                interface IRelativeSourceFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Data.RelativeSource** instance);
                }

                [uuid(E6F2FEF0-0712-487F-B313-F300B8D79AA1)]
                [version(0x06020000)]
                interface IValueConverter : IInspectable
                {
                    HRESULT Convert([in] IInspectable* value, [in] Windows.UI.Xaml.Interop.TypeName targetType, [in] IInspectable* parameter, [in] HSTRING language, [out] [retval] IInspectable** returnValue);
                    HRESULT ConvertBack([in] IInspectable* value, [in] Windows.UI.Xaml.Interop.TypeName targetType, [in] IInspectable* parameter, [in] HSTRING language, [out] [retval] IInspectable** returnValue);
                }

                [uuid(1589A2AB-3D15-49BC-A447-8A5448E58870)]
                [exclusiveto(Windows.UI.Xaml.Data.BindingBase)]
                [version(0x06020000)]
                interface IBindingBase : IInspectable
                {
                }

                [uuid(22DAFC3A-7701-4666-A1BA-9859BDCFEC34)]
                [exclusiveto(Windows.UI.Xaml.Data.BindingBase)]
                [version(0x06020000)]
                interface IBindingBaseFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Data.BindingBase** instance);
                }

                [uuid(3F7A0C6B-D00F-4730-8C1D-48E16C46F9CA)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.Binding)]
                interface IBinding : IInspectable
                {
                    [propget] HRESULT Path([out] [retval] Windows.UI.Xaml.PropertyPath** value);
                    [propput] HRESULT Path([in] Windows.UI.Xaml.PropertyPath* value);
                    [propget] HRESULT Mode([out] [retval] Windows.UI.Xaml.Data.BindingMode* value);
                    [propput] HRESULT Mode([in] Windows.UI.Xaml.Data.BindingMode value);
                    [propget] HRESULT Source([out] [retval] IInspectable** value);
                    [propput] HRESULT Source([in] IInspectable* value);
                    [propget] HRESULT RelativeSource([out] [retval] Windows.UI.Xaml.Data.RelativeSource** value);
                    [propput] HRESULT RelativeSource([in] Windows.UI.Xaml.Data.RelativeSource* value);
                    [propget] HRESULT ElementName([out] [retval] HSTRING* value);
                    [propput] HRESULT ElementName([in] HSTRING value);
                    [propget] HRESULT Converter([out] [retval] Windows.UI.Xaml.Data.IValueConverter** value);
                    [propput] HRESULT Converter([in] Windows.UI.Xaml.Data.IValueConverter* value);
                    [propget] HRESULT ConverterParameter([out] [retval] IInspectable** value);
                    [propput] HRESULT ConverterParameter([in] IInspectable* value);
                    [propget] HRESULT ConverterLanguage([out] [retval] HSTRING* value);
                    [propput] HRESULT ConverterLanguage([in] HSTRING value);
                }

                [uuid(FF42BB08-C39E-4F7E-8434-A1569083883C)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.Binding)]
                interface IBindingFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Data.Binding** instance);
                }

                [uuid(F9891E29-51CC-47DD-A5B9-35DC4914AF69)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.CurrentChangingEventArgs)]
                interface ICurrentChangingEventArgs : IInspectable
                {
                    [propget] HRESULT Cancel([out] [retval] boolean* value);
                    [propput] HRESULT Cancel([in] boolean value);
                    [propget] HRESULT IsCancelable([out] [retval] boolean* value);
                }

                [uuid(153BBEEE-62F3-48CF-8183-8BE26DE3A66E)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.CurrentChangingEventArgs)]
                interface ICurrentChangingEventArgsFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Data.CurrentChangingEventArgs** instance);
                    HRESULT CreateWithCancelableParameter([in] boolean isCancelable, [in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Data.CurrentChangingEventArgs** instance);
                }

                [uuid(8BE8BFE4-DBEF-44DF-8126-A31A89121DDC)]
                [version(0x06020000)]
                interface ICollectionView : IInspectable
                    requires
                        Windows.Foundation.Collections.IObservableVector<IInspectable*>,
                        Windows.Foundation.Collections.IVector<IInspectable*>,
                        Windows.Foundation.Collections.IIterable<IInspectable*>
                {
                    [propget] HRESULT CurrentItem([out] [retval] IInspectable** value);
                    [propget] HRESULT CurrentPosition([out] [retval] INT32* value);
                    [propget] HRESULT IsCurrentAfterLast([out] [retval] boolean* value);
                    [propget] HRESULT IsCurrentBeforeFirst([out] [retval] boolean* value);
                    [propget] HRESULT CollectionGroups([out] [retval] Windows.Foundation.Collections.IObservableVector<IInspectable*>** value);
                    [propget] HRESULT HasMoreItems([out] [retval] boolean* value);
                    [eventadd] HRESULT CurrentChanged([in] Windows.Foundation.EventHandler<IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT CurrentChanged([in] EventRegistrationToken token);
                    [eventadd] HRESULT CurrentChanging([in] Windows.UI.Xaml.Data.CurrentChangingEventHandler* value, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT CurrentChanging([in] EventRegistrationToken token);
                    HRESULT MoveCurrentTo([in] IInspectable* item, [out] [retval] boolean* returnValue);
                    HRESULT MoveCurrentToPosition([in] INT32 index, [out] [retval] boolean* returnValue);
                    HRESULT MoveCurrentToFirst([out] [retval] boolean* returnValue);
                    HRESULT MoveCurrentToLast([out] [retval] boolean* returnValue);
                    HRESULT MoveCurrentToNext([out] [retval] boolean* returnValue);
                    HRESULT MoveCurrentToPrevious([out] [retval] boolean* returnValue);
                    HRESULT LoadMoreItemsAsync([in] UINT32 count, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Xaml.Data.LoadMoreItemsResult>** returnValue);
                }

                [uuid(7E01B9D8-D7B5-48B6-B31C-5BB5BDF5F09B)]
                [version(0x06020000)]
                interface ICollectionViewGroup : IInspectable
                {
                    [propget] HRESULT Group([out] [retval] IInspectable** value);
                    [propget] HRESULT GroupItems([out] [retval] Windows.Foundation.Collections.IObservableVector<IInspectable*>** value);
                }

                [uuid(A66A1146-D2FB-4EAD-BE9F-3578A466DCFE)]
                [exclusiveto(Windows.UI.Xaml.Data.CollectionViewSource)]
                [version(0x06020000)]
                interface ICollectionViewSource : IInspectable
                {
                    [propget] HRESULT Source([out] [retval] IInspectable** value);
                    [propput] HRESULT Source([in] IInspectable* value);
                    [propget] HRESULT View([out] [retval] Windows.UI.Xaml.Data.ICollectionView** value);
                    [propget] HRESULT IsSourceGrouped([out] [retval] boolean* value);
                    [propput] HRESULT IsSourceGrouped([in] boolean value);
                    [propget] HRESULT ItemsPath([out] [retval] Windows.UI.Xaml.PropertyPath** value);
                    [propput] HRESULT ItemsPath([in] Windows.UI.Xaml.PropertyPath* value);
                }

                [uuid(173A0710-46AF-4C0C-818B-21B6EF81BF65)]
                [exclusiveto(Windows.UI.Xaml.Data.CollectionViewSource)]
                [version(0x06020000)]
                interface ICollectionViewSourceStatics : IInspectable
                {
                    [propget] HRESULT SourceProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT ViewProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT IsSourceGroupedProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT ItemsPathProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [uuid(6FFFD738-9839-419C-A17A-4B3604E1524E)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Xaml.Data.BindingOperations)]
                interface IBindingOperations : IInspectable
                {
                }

                [uuid(E155EF73-95A0-4AAB-8C7D-2A47DA073C79)]
                [exclusiveto(Windows.UI.Xaml.Data.BindingOperations)]
                [version(0x06020000)]
                interface IBindingOperationsStatics : IInspectable
                {
                    HRESULT SetBinding([in] Windows.UI.Xaml.DependencyObject* target, [in] Windows.UI.Xaml.DependencyProperty* dp, [in] Windows.UI.Xaml.Data.BindingBase* binding);
                }

                [uuid(30DA92C0-23E8-42A0-AE7C-734A0E5D2782)]
                [version(0x06020000)]
                interface ICustomProperty : IInspectable
                {
                    [propget] HRESULT Type([out] [retval] Windows.UI.Xaml.Interop.TypeName* value);
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                    HRESULT GetValue([in] IInspectable* target, [out] [retval] IInspectable** value);
                    HRESULT SetValue([in] IInspectable* target, [in] IInspectable* value);
                    HRESULT GetIndexedValue([in] IInspectable* target, [in] IInspectable* index, [out] [retval] IInspectable** value);
                    HRESULT SetIndexedValue([in] IInspectable* target, [in] IInspectable* value, [in] IInspectable* index);
                    [propget] HRESULT CanWrite([out] [retval] boolean* value);
                    [propget] HRESULT CanRead([out] [retval] boolean* value);
                }

                [uuid(7C925755-3E48-42B4-8677-76372267033F)]
                [version(0x06020000)]
                interface ICustomPropertyProvider : IInspectable
                {
                    HRESULT GetCustomProperty([in] HSTRING name, [out] [retval] Windows.UI.Xaml.Data.ICustomProperty** customProperty);
                    HRESULT GetIndexedProperty([in] HSTRING name, [in] Windows.UI.Xaml.Interop.TypeName type, [out] [retval] Windows.UI.Xaml.Data.ICustomProperty** customProperty);
                    HRESULT GetStringRepresentation([out] [retval] HSTRING* stringRepresentation);
                    [propget] HRESULT Type([out] [retval] Windows.UI.Xaml.Interop.TypeName* value);
                }

                [uuid(7F5EE992-7694-4E6C-A51B-E34BF43DE743)]
                [version(0x06020000)]
                interface ISupportIncrementalLoading : IInspectable
                {
                    HRESULT LoadMoreItemsAsync([in] UINT32 count, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Xaml.Data.LoadMoreItemsResult>** operation);
                    [propget] HRESULT HasMoreItems([out] [retval] boolean* value);
                }

                [uuid(34D4AAF4-8E72-4950-9192-ECD07D399D0A)]
                [version(0x06020000)]
                interface ICollectionViewFactory : IInspectable
                {
                    HRESULT CreateView([out] [retval] Windows.UI.Xaml.Data.ICollectionView** result);
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                [composable(Windows.UI.Xaml.Data.ICurrentChangingEventArgsFactory, public, 0x06020000)]
                [threading(both)]
                runtimeclass CurrentChangingEventArgs
                {
                    [default] interface Windows.UI.Xaml.Data.ICurrentChangingEventArgs;
                }

                [version(0x06020000)]
                [threading(both)]
                [composable(Windows.UI.Xaml.Data.IPropertyChangedEventArgsFactory, public, 0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PropertyChangedEventArgs
                {
                    [default] interface Windows.UI.Xaml.Data.IPropertyChangedEventArgs;
                }

                [threading(both)]
                [version(0x06020000)]
                [marshaling_behavior(agile)]
                [composable(Windows.UI.Xaml.Data.IRelativeSourceFactory, public, 0x06020000)]
                runtimeclass RelativeSource : Windows.UI.Xaml.DependencyObject
                {
                    [default] interface Windows.UI.Xaml.Data.IRelativeSource;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x06020000)]
                [composable(Windows.UI.Xaml.Data.IBindingBaseFactory, public, 0x06020000)]
                runtimeclass BindingBase : Windows.UI.Xaml.DependencyObject
                {
                    [default] interface Windows.UI.Xaml.Data.IBindingBase;
                }

                [composable(Windows.UI.Xaml.Data.IBindingFactory, public, 0x06020000)]
                [threading(both)]
                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass Binding : Windows.UI.Xaml.Data.BindingBase
                {
                    [default] interface Windows.UI.Xaml.Data.IBinding;
                }

                [threading(both)]
                [activatable(0x06020000)]
                [version(0x06020000)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Data.ICollectionViewSourceStatics, 0x06020000)]
                runtimeclass CollectionViewSource : Windows.UI.Xaml.DependencyObject
                {
                    [default] interface Windows.UI.Xaml.Data.ICollectionViewSource;
                }

                [static(Windows.UI.Xaml.Data.IBindingOperationsStatics, 0x06020000)]
                [version(0x06020000)]
                [threading(both)]
                [marshaling_behavior(agile)]
                runtimeclass BindingOperations
                {
                    [default] interface Windows.UI.Xaml.Data.IBindingOperations;
                }
            }
        }
    }
}
