From c4e32a2727e2cdcbf3bdf14f8dfe38282dcecd4f Mon Sep 17 00:00:00 2001 From: reunion-maestro-bot Date: Fri, 26 Jan 2024 02:39:05 +0000 Subject: [PATCH] Syncing content from committish release/1.5-experimental2 --- .vsconfig | 4 +- .vsconfig_buildtools | 5 +- Directory.Build.targets | 3 +- controls/CppWinRT.props | 30 +- controls/FeatureAreas.props | 10 +- controls/MUXControls.sln | 45 +- controls/MUXControlsInnerLoop.sln | 450 +++-- controls/ProjectImports.targets | 6 +- controls/SdkVersion.props | 7 +- .../AnnotatedScrollBarTrace.h | 8 +- controls/dev/Breadcrumb/BreadcrumbBar.xaml | 98 +- controls/dev/Breadcrumb/BreadcrumbBarItem.cpp | 14 +- controls/dev/Breadcrumb/BreadcrumbBarItem.h | 2 +- controls/dev/Breadcrumb/BreadcrumbLayout.cpp | 9 +- controls/dev/Breadcrumb/BreadcrumbLayout.h | 2 +- .../Breadcrumb/TestUI/BreadcrumbBarPage.xaml | 77 +- .../dev/Breadcrumb/TestUI/TreeStructure.cs | 8 + .../APITests/CommandBarFlyoutTests.cs | 135 +- .../CommandBarFlyoutCommandBar.cpp | 96 +- .../CommandBarFlyoutCommandBar.h | 16 +- .../CommandBarFlyout/CommandBarFlyoutTrace.h | 2 +- .../CommandBarFlyout_themeresources.xaml | 82 +- .../InteractionTests/CommandBarFlyoutTests.cs | 2 +- .../TestUI/CommandBarFlyoutPage.xaml | 52 + .../TestUI/CommandBarFlyoutPage.xaml.cs | 47 + .../APITests/CommonStylesTests.cs | 3 + .../CommandBar_themeresources.xaml | 61 +- .../InteractionTests/CommonStylesTests.cs | 2 +- .../MenuFlyout_themeresources.xaml | 2 +- .../dev/CommonStyles/TestUI/AppBarPage.xaml | 55 + .../CommonStyles/TestUI/AppBarPage.xaml.cs | 53 + .../dev/CommonStyles/TestUI/BlankPage.xaml | 12 + .../dev/CommonStyles/TestUI/BlankPage.xaml.cs | 24 + .../TestUI/CommandBarCenterPage.xaml | 15 + .../TestUI/CommandBarCenterPage.xaml.cs | 19 + .../CommonStyles/TestUI/CommandBarPage.xaml | 170 +- .../TestUI/CommandBarPage.xaml.cs | 1 - .../TestUI/CommandBarSummaryPage.xaml | 97 + .../TestUI/CommandBarSummaryPage.xaml.cs | 136 ++ .../TestUI/CommonStyles_TestUI.projitems | 60 + .../TestUI/FlatItemsControlPage.xaml | 233 +++ .../TestUI/FlatItemsControlPage.xaml.cs | 847 ++++++++ .../TestUI/GroupedItemsControlPage.xaml | 296 +++ .../TestUI/GroupedItemsControlPage.xaml.cs | 1162 +++++++++++ .../CommonStyles/TestUI/ItemsControlPage.xaml | 16 + .../TestUI/ItemsControlPage.xaml.cs | 20 + .../TestUI/NestedGridViewsPage.xaml | 12 +- .../TestUI/NestedGridViewsPage.xaml.cs | 16 + .../TestUI/NestedItemsControlsPage.xaml | 422 ++++ .../TestUI/NestedItemsControlsPage.xaml.cs | 211 ++ .../CommonStyles/TextBox_themeresources.xaml | 6 +- .../dev/Generated/MapControl.properties.cpp | 220 ++ .../dev/Generated/MapControl.properties.h | 69 + .../dev/Generated/MapElement.properties.cpp | 16 + .../MapElementClickEventArgs.properties.cpp | 16 + .../Generated/MapElementsLayer.properties.cpp | 73 + .../Generated/MapElementsLayer.properties.h | 30 + controls/dev/Generated/MapIcon.properties.cpp | 62 + controls/dev/Generated/MapIcon.properties.h | 25 + .../dev/Generated/MapLayer.properties.cpp | 16 + .../dev/Generated/SelectorBar.properties.cpp | 107 + .../dev/Generated/SelectorBar.properties.h | 39 + .../Generated/SelectorBarItem.properties.cpp | 98 + .../Generated/SelectorBarItem.properties.h | 34 + ...lectorBarItemAutomationPeer.properties.cpp | 16 + .../SelectorBarTestHooks.properties.cpp | 16 + .../InteractionTests/ItemContainerTests.cs | 8 +- controls/dev/ItemContainer/ItemContainer.cpp | 5 +- controls/dev/ItemContainer/ItemContainer.h | 4 +- .../ItemContainerAutomationPeer.h | 7 +- .../dev/ItemContainer/ItemContainerTrace.h | 8 +- .../dev/ItemsView/APITests/ItemsViewTests.cs | 57 +- .../ItemsViewTestsWithInputHelper.cs | 42 +- controls/dev/ItemsView/ItemsView.cpp | 151 +- controls/dev/ItemsView/ItemsView.h | 11 +- .../dev/ItemsView/ItemsViewInteractions.cpp | 54 +- controls/dev/ItemsView/ItemsViewTrace.h | 8 +- .../TestUI/ItemsViewSummaryPage.xaml | 2 + .../TestUI/ItemsViewSummaryPage.xaml.cs | 248 ++- ...Microsoft.UI.Xaml.Controls.Lightup.vcxproj | 37 + .../MapControl/APITests/MapControlTests.cs | 22 + .../APITests/MapControl_APITests.projitems | 14 + .../APITests/MapControl_APITests.shproj | 13 + .../InteractionTests/MapControlTests.cs | 41 + .../MapControl_InteractionTests.projitems | 15 + .../MapControl_InteractionTests.shproj | 14 + controls/dev/MapControl/MapControl.cpp | 385 ++++ controls/dev/MapControl/MapControl.h | 58 + controls/dev/MapControl/MapControl.idl | 83 + controls/dev/MapControl/MapControl.vcxitems | 53 + controls/dev/MapControl/MapControl.xaml | 21 + ...ontrolMapServiceErrorOccurredEventArgs.cpp | 8 + ...pControlMapServiceErrorOccurredEventArgs.h | 23 + controls/dev/MapControl/MapElement.cpp | 13 + controls/dev/MapControl/MapElement.h | 17 + .../MapControl/MapElementClickEventArgs.cpp | 8 + .../dev/MapControl/MapElementClickEventArgs.h | 27 + controls/dev/MapControl/MapElementsLayer.cpp | 74 + controls/dev/MapControl/MapElementsLayer.h | 28 + controls/dev/MapControl/MapIcon.cpp | 29 + controls/dev/MapControl/MapIcon.h | 23 + controls/dev/MapControl/MapLayer.cpp | 12 + controls/dev/MapControl/MapLayer.h | 17 + .../dev/MapControl/TestUI/MapControlPage.xaml | 25 + .../MapControl/TestUI/MapControlPage.xaml.cs | 50 + .../TestUI/MapControl_TestUI.projitems | 23 + .../TestUI/MapControl_TestUI.shproj | 14 + controls/dev/MapControl/map.html | 293 +++ controls/dev/MenuBar/MenuBar.xaml | 2 +- .../MenuBar/MenuBar_TestUI/MenuBarPage.xaml | 2 +- ...crosoft.UI.Xaml.FrameworkPackagePRI.csproj | 2 +- .../dev/NavigationView/NavigationView.cpp | 257 ++- controls/dev/NavigationView/NavigationView.h | 20 +- .../NavigationView/NavigationView.vcxitems | 2 +- .../dev/NavigationView/NavigationViewItem.cpp | 57 +- .../dev/NavigationView/NavigationViewItem.h | 9 + ...ers.h => NavigationViewItemBaseRevokers.h} | 4 +- .../NavigationViewItemPresenter.cpp | 15 +- .../NavigationViewItemPresenter.h | 3 +- .../NavigationViewItemsFactory.cpp | 1 - .../CommonTests.cs | 31 + .../PaneBehaviorTests.cs | 118 ++ .../SelectionTests.cs | 17 + .../TopModeTests.cs | 17 + .../NavigationView_themeresources.xaml | 1 + ...vigationViewCompactPaneLengthTestPage.xaml | 80 +- ...ationViewCompactPaneLengthTestPage.xaml.cs | 16 + .../NavigationViewMenuItemsSourcePage.xaml | 2 +- .../NavigationViewMenuItemsSourcePage.xaml.cs | 14 + .../TestUI/Common/NavigationViewPage.xaml | 84 +- .../TestUI/Common/NavigationViewPage.xaml.cs | 13 + .../CustomNavigationViewItem.xaml | 17 + .../CustomNavigationViewItem.xaml.cs | 18 + .../NavigationViewCustomMenuItemPage.xaml | 24 + .../NavigationViewCustomMenuItemPage.xaml.cs | 23 + ...HierarchicalNavigationViewDataBinding.xaml | 6 +- ...rarchicalNavigationViewDataBinding.xaml.cs | 10 + .../HierarchicalNavigationViewMarkup.xaml | 12 +- .../HierarchicalNavigationViewMarkup.xaml.cs | 10 + .../TestUI/NavigationViewCaseBundle.xaml | 1 + .../TestUI/NavigationViewCaseBundle.xaml.cs | 1 + .../TestUI/NavigationView_TestUI.projitems | 13 + .../dev/PullToRefresh/PTRTracing/PTRTracing.h | 8 +- controls/dev/Repeater/ItemsRepeaterTrace.h | 8 +- controls/dev/Repeater/LinedFlowLayoutTrace.h | 8 +- controls/dev/Repeater/SelectionModel.cpp | 6 + controls/dev/Repeater/SelectionModel.h | 9 +- .../Repeater/TestUI/RepeaterTestUIPage.xaml | 1 + .../TestUI/RepeaterTestUIPage.xaml.cs | 5 + .../Repeater/TestUI/Repeater_TestUI.projitems | 7 + .../Samples/KeyboardNavigationSample.cs | 94 + .../Samples/KeyboardNavigationSample.xaml | 68 + .../TestUI/Samples/LinedFlowLayoutDemo.cs | 4 +- .../TestUI/Samples/LinedFlowLayoutDemo.xaml | 6 +- .../dev/ResourceHelper/ResourceAccessor.cpp | 27 +- .../dev/ResourceHelper/ResourceAccessor.h | 6 + .../ScrollPresenter/ScrollPresenterTrace.h | 8 +- controls/dev/ScrollView/ScrollView.cpp | 91 - controls/dev/ScrollView/ScrollView.h | 16 +- controls/dev/ScrollView/ScrollView.vcxitems | 3 + controls/dev/ScrollView/ScrollViewLightup.cpp | 126 ++ controls/dev/ScrollView/ScrollViewTrace.h | 8 +- .../SelectorBar/APITests/SelectorBarTests.cs | 255 +++ .../APITests/SelectorBar_APITests.projitems | 14 + .../APITests/SelectorBar_APITests.shproj | 13 + .../InteractionTests/SelectorBarTests.cs | 81 + .../SelectorBar_InteractionTests.projitems | 15 + .../SelectorBar_InteractionTests.shproj | 14 + controls/dev/SelectorBar/SelectorBar.cpp | 228 +++ controls/dev/SelectorBar/SelectorBar.h | 55 + controls/dev/SelectorBar/SelectorBar.idl | 57 + controls/dev/SelectorBar/SelectorBar.vcxitems | 53 + controls/dev/SelectorBar/SelectorBar.xaml | 209 ++ controls/dev/SelectorBar/SelectorBarItem.cpp | 116 ++ controls/dev/SelectorBar/SelectorBarItem.h | 45 + .../SelectorBarItemAutomationPeer.cpp | 58 + .../SelectorBarItemAutomationPeer.h | 22 + .../SelectorBarSelectionChangedEventArgs.cpp | 6 + .../SelectorBarSelectionChangedEventArgs.h | 11 + .../dev/SelectorBar/SelectorBarTestHooks.cpp | 16 + .../dev/SelectorBar/SelectorBarTestHooks.h | 14 + .../dev/SelectorBar/SelectorBarTestHooks.idl | 12 + .../SelectorBarTestHooksFactory.cpp | 8 + .../SelectorBar/SelectorBarTestHooksFactory.h | 6 + controls/dev/SelectorBar/SelectorBarTrace.h | 164 ++ .../SelectorBar_themeresources.xaml | 95 + .../SelectorBar/Strings/en-us/Resources.resw | 124 ++ .../SelectorBar/TestUI/SelectorBarPage.xaml | 29 + .../TestUI/SelectorBarPage.xaml.cs | 62 + .../TestUI/SelectorBarSamplePage.xaml | 47 + .../TestUI/SelectorBarSamplePage.xaml.cs | 69 + .../TestUI/SelectorBarSummaryPage.xaml | 277 +++ .../TestUI/SelectorBarSummaryPage.xaml.cs | 1777 +++++++++++++++++ .../TestUI/SelectorBar_TestUI.projitems | 37 + .../TestUI/SelectorBar_TestUI.shproj | 14 + .../SplitButton_themeresources.xaml | 4 +- controls/dev/SwipeControl/SwipeControlTrace.h | 8 +- controls/dev/TabView/TabViewTrace.h | 8 +- .../InteractionTests/TeachingTipTests.cs | 20 + controls/dev/Telemetry/MicrosoftTelemetry.h | 10 - ...{TraceLogging.cpp => MuxcTraceLogging.cpp} | 5 +- .../{TraceLogging.h => MuxcTraceLogging.h} | 86 + controls/dev/Telemetry/RuntimeProfiler.cpp | 54 +- controls/dev/Telemetry/RuntimeProfiler.h | 3 + controls/dev/Telemetry/Telemetry.vcxitems | 2 +- .../dev/TestHooks/MUXControlsTestHooks.cpp | 11 + .../InteractionTests/WebView2Tests.cs | 51 +- .../WebView2/TestUI/WebView2BasicPage.xaml | 3 + .../WebView2/TestUI/WebView2BasicPage.xaml.cs | 369 +++- controls/dev/WebView2/WebView2.cpp | 104 +- controls/dev/WebView2/WebView2.h | 14 +- controls/dev/WebView2/WebView2.idl | 6 + .../dev/dll/Microsoft.UI.Xaml.Common.props | 20 - .../dev/dll/Microsoft.UI.Xaml.Common.targets | 6 +- .../dll/Microsoft.UI.Xaml.Controls.vcxproj | 44 +- controls/dev/dll/SharedHelpers.cpp | 13 + .../dev/dll/XamlMetadataProviderGenerated.h | 242 +++ controls/dev/dll/dllmain.cpp | 2 +- controls/dev/dll/pch.h | 8 + controls/dev/inc/CppWinRTIncludes.h | 6 +- controls/dev/inc/SharedHelpers.h | 3 + .../Microsoft.UI.Xaml.Controls.idl.vcxproj | 12 +- controls/test/IXMPTestApp/IXMPTestApp.csproj | 4 +- .../MUXControls.Test/MUXControls.Test.csproj | 23 +- .../WinUICppDesktopSampleAppTests.cs | 63 +- .../MUXControlsTestApp.csproj | 35 +- .../Themes/DisableAnimationsStyles.xaml | 12 +- .../NavigationViewLeftMinimal.xml | 4 +- .../MUXExperimentalTestApp.csproj | 2 +- controls/test/TestAppCX/TestAppCX.vcxproj | 4 +- .../MUXTestInfra/MUXTestInfra.csproj | 18 +- .../MUXBaselineResourcesGenerator.csproj | 4 +- dxaml/Xaml.Cpp.Targets | 47 +- dxaml/Xaml.NTLegacy.CSharp.props | 2 +- dxaml/Xaml.NTLegacy.Cpp.props | 4 +- dxaml/common.props | 1 + dxaml/msbuild/BuildSettings/ModuleLink.props | 4 + dxaml/msbuild/BuildSettings/TraceWPP.targets | 21 +- dxaml/phone/lib/Pivot_Partial.cpp | 76 +- dxaml/phone/lib/Pivot_Partial.h | 2 - dxaml/phone/lib/precomp.h | 1 + .../components/ContentRoot/ContentRoot.cpp | 26 +- .../ContentRoot/KeyboardInputProcessor.cpp | 2 +- .../ContentRoot/PointerInputProcessor.cpp | 2 +- .../components/ContentRoot/inc/ContentRoot.h | 4 +- .../components/WindowChrome/CWindowChrome.cpp | 2 +- dxaml/xcp/components/base/inc/XamlTelemetry.h | 61 +- .../xcp/components/comptree/OfferTracker.cpp | 2 - .../components/comptree/inc/DCompTreeHost.h | 2 - dxaml/xcp/components/elements/UIElement.cpp | 4 +- .../components/elements/UIElementLayout.cpp | 2 +- .../graphics/inc/EffectPolicyHelper.h | 3 +- .../xcp/components/metadata/inc/EnumDefs.g.h | 19 +- dxaml/xcp/components/metadata/inc/Indexes.g.h | 6 +- dxaml/xcp/components/pch/precomp.h | 2 +- .../xamlDiagnostics/LiveVisualTree.cpp | 2 +- .../xamlDiagnostics/RuntimeElement.cpp | 2 +- .../xamlDiagnostics/RuntimeObject.cpp | 9 +- .../xamlDiagnostics/inc/RuntimeObject.h | 1 + .../core/Parser/StableXbfIndexMapping.g.cpp | 2 + dxaml/xcp/core/Parser/StableXbfIndexes.g.h | 3 +- .../xcp/core/core/elements/AutomationPeer.cpp | 10 +- dxaml/xcp/core/core/elements/Popup.cpp | 48 +- dxaml/xcp/core/core/elements/depends.cpp | 30 +- .../core/core/elements/lib/elements.vcxproj | 4 + dxaml/xcp/core/core/elements/uielement.cpp | 25 +- dxaml/xcp/core/dll/VisualTree.cpp | 8 +- dxaml/xcp/core/dll/focusmgr.cpp | 16 +- dxaml/xcp/core/inc/CDependencyObject.h | 3 +- dxaml/xcp/core/inc/InputServices.h | 21 +- dxaml/xcp/core/inc/LayoutCycleDebugSettings.h | 22 +- dxaml/xcp/core/inc/Popup.h | 12 +- dxaml/xcp/core/inc/Timeline.h | 2 - dxaml/xcp/core/inc/VisualTree.h | 6 +- dxaml/xcp/core/inc/XamlIslandRoot.h | 12 +- dxaml/xcp/core/inc/corep.h | 1 + dxaml/xcp/core/inc/uielement.h | 9 +- dxaml/xcp/core/input/BringIntoViewHandler.cpp | 5 + dxaml/xcp/core/input/InputServices.cpp | 58 +- dxaml/xcp/core/layout/LayoutManager.cpp | 12 +- dxaml/xcp/core/metadata/dynamic/precomp.h | 3 +- .../core/native/text/Controls/PasswordBox.cpp | 21 +- .../Microsoft.ui.xaml.resources.19h1.vcxproj | 1 + ...Microsoft.ui.xaml.resources.common.vcxproj | 1 + .../idl/com/microsoft.ui.xaml-com.vcxproj | 2 +- ...icrosoft.ui.xaml.controls.controls.vcxproj | 4 + .../microsoft.ui.xaml.controls.controls2.idl | 5 +- .../core/Microsoft.ui.xaml.coretypes.vcxproj | 4 + .../core/microsoft.ui.xaml.coretypes.idl | 22 + .../core/microsoft.ui.xaml.coretypes2.idl | 39 +- .../winrt/main/Microsoft.ui.xaml-main.vcxproj | 1 + .../winrt/main/microsoft.ui.xaml.private.idl | 1 + .../main/windows.foundation.declarations.idl | 32 + dxaml/xcp/dxaml/lib/AppBarButton_Partial.cpp | 40 +- dxaml/xcp/dxaml/lib/AppBarButton_Partial.h | 6 +- .../dxaml/lib/AppBarToggleButton_Partial.cpp | 40 +- .../dxaml/lib/AppBarToggleButton_Partial.h | 6 +- dxaml/xcp/dxaml/lib/AppBar_Partial.cpp | 90 +- dxaml/xcp/dxaml/lib/AppBar_Partial.h | 49 +- .../lib/ApplicationBarService_Partial.cpp | 5 + .../dxaml/lib/ApplicationBarService_Partial.h | 2 + .../xcp/dxaml/lib/AutoSuggestBox_Partial.cpp | 11 +- dxaml/xcp/dxaml/lib/BudgetManager_Partial.h | 13 + dxaml/xcp/dxaml/lib/ComboBox_Partial.cpp | 4 +- dxaml/xcp/dxaml/lib/CommandBar_Partial.cpp | 134 +- dxaml/xcp/dxaml/lib/CommandBar_Partial.h | 4 +- dxaml/xcp/dxaml/lib/ContentDialog_Partial.cpp | 53 +- dxaml/xcp/dxaml/lib/DXamlCore.cpp | 118 -- dxaml/xcp/dxaml/lib/DXamlCore.h | 5 + dxaml/xcp/dxaml/lib/DXamlCoreLightup.cpp | 133 ++ dxaml/xcp/dxaml/lib/DXamlInstanceStorage.cpp | 16 +- dxaml/xcp/dxaml/lib/DebugSettings_Partial.cpp | 8 +- dxaml/xcp/dxaml/lib/DebugSettings_Partial.h | 8 +- dxaml/xcp/dxaml/lib/DesktopWindowImpl.cpp | 30 +- dxaml/xcp/dxaml/lib/DesktopWindowImpl.h | 7 +- .../lib/DesktopWindowXamlSource_Partial.cpp | 27 +- dxaml/xcp/dxaml/lib/DiagnosticsInterop.cpp | 13 + dxaml/xcp/dxaml/lib/Factories.g.cpp | 2 + dxaml/xcp/dxaml/lib/FlipView_Partial.cpp | 4 +- dxaml/xcp/dxaml/lib/FlyoutBase_partial.cpp | 33 +- .../lib/FrameworkApplication_Partial.cpp | 46 +- .../dxaml/lib/FrameworkApplication_Partial.h | 3 + dxaml/xcp/dxaml/lib/IApplicationBarService.h | 3 + dxaml/xcp/dxaml/lib/InputSiteAdapter.h | 8 + dxaml/xcp/dxaml/lib/ItemsControl_Partial.cpp | 902 +++++++++ dxaml/xcp/dxaml/lib/ItemsControl_Partial.h | 76 +- dxaml/xcp/dxaml/lib/JupiterWindow.cpp | 19 +- dxaml/xcp/dxaml/lib/ListBox_Partial.cpp | 6 +- dxaml/xcp/dxaml/lib/ListViewBase_Partial.cpp | 418 ++-- dxaml/xcp/dxaml/lib/ListViewBase_Partial.h | 74 +- .../ListViewBase_Partial_ContainerPhase.cpp | 8 +- .../lib/ListViewBase_Partial_Interaction.cpp | 216 +- .../lib/ListViewBase_Partial_Reorder.cpp | 4 +- ...ewBase_Partial_SemanticZoomInformation.cpp | 137 +- dxaml/xcp/dxaml/lib/MenuFlyout_Partial.cpp | 3 + dxaml/xcp/dxaml/lib/Page_Partial.cpp | 7 - dxaml/xcp/dxaml/lib/Popup_Partial.cpp | 10 +- dxaml/xcp/dxaml/lib/ScrollBar_Partial.cpp | 2 +- .../lib/ScrollContentPresenter_Partial.cpp | 2 +- dxaml/xcp/dxaml/lib/Selector_Partial.cpp | 189 +- dxaml/xcp/dxaml/lib/Selector_Partial.h | 28 +- dxaml/xcp/dxaml/lib/Slider_Partial.cpp | 3 +- dxaml/xcp/dxaml/lib/TimedTextSource.cpp | 50 +- dxaml/xcp/dxaml/lib/WindowChrome_Partial.cpp | 2 +- dxaml/xcp/dxaml/lib/WindowChrome_Partial.h | 2 +- .../dxaml/lib/WindowsXamlManager_Partial.cpp | 111 +- .../dxaml/lib/WindowsXamlManager_Partial.h | 25 +- dxaml/xcp/dxaml/lib/XamlIsland_Partial.cpp | 81 + dxaml/xcp/dxaml/lib/XamlIsland_Partial.h | 9 + dxaml/xcp/dxaml/lib/XamlRoot_Partial.cpp | 11 +- ...utdownCompletedOnThreadEventArgs_Partial.h | 27 + dxaml/xcp/dxaml/lib/precomp.h | 3 +- dxaml/xcp/dxaml/lib/synonyms.g.h | 7 +- .../winrtcontrols/wrtdxamlcontrols.vcxproj | 1 + .../wrtdxamlfoundation.vcxproj | 15 + .../lib/winrtgeneratedclasses/Aggregate.g.cpp | 1 + .../winrtgeneratedclasses/AppBarButton.g.cpp | 18 + .../winrtgeneratedclasses/AppBarButton.g.h | 1 + .../AppBarToggleButton.g.cpp | 18 + .../AppBarToggleButton.g.h | 1 + .../winrtgeneratedclasses/DebugSettings.g.cpp | 22 +- .../winrtgeneratedclasses/DebugSettings.g.h | 35 +- .../FrameworkApplication.g.cpp | 24 + .../FrameworkApplication.g.h | 21 + .../MenuFlyoutPresenter.g.cpp | 12 +- .../MenuFlyoutPresenter.g.h | 29 +- .../WindowsXamlManager.g.cpp | 65 + .../WindowsXamlManager.g.h | 38 +- .../winrtgeneratedclasses/XamlIsland.g.cpp | 23 + .../lib/winrtgeneratedclasses/XamlIsland.g.h | 7 + ...mlShutdownCompletedOnThreadEventArgs.g.cpp | 75 + ...XamlShutdownCompletedOnThreadEventArgs.g.h | 84 + .../xcp/dxaml/themes/autogen/GenAllXbf.csproj | 4 +- dxaml/xcp/inc/DCompExtras.h | 47 - dxaml/xcp/inc/TraceLoggingInterop.h | 19 - .../inc/platformsdk-uplevel/IUISettings6.h | 79 - dxaml/xcp/inc/xcperrorresource.h | 1 + dxaml/xcp/inc/xcpwindows.h | 7 +- dxaml/xcp/pal/debug/memory.cpp | 53 +- .../pal/inc/PalDirectManipulationService.h | 4 +- .../DirectManipulationService.h | 23 +- .../DCompInteropCompositorPartnerCallback.h | 2 - .../win/desktop/DCompSurfaceFactoryManager.h | 1 - dxaml/xcp/tools/GenXbfDLL/GenXbf.vcxproj | 1 - dxaml/xcp/tools/GenXbfDLL/precomp.h | 3 - .../Modules/Controls/CommandBar.cs | 1 + .../Modules/Controls/MenuFlyout.cs | 5 +- .../XamlGen/StableEventIndexes.g.csv | 1 + .../XamlOM/Model/Microsoft.UI.Xaml.Hosting.cs | 23 + .../XamlOM/Model/Microsoft.UI.Xaml.cs | 68 +- .../Metadata/StableXbfIndexMetadata.g.cs | 1 + dxaml/xcp/win/agcore.debug/CommonErrors.rc | 1 + eng/Version.Details.xml | 20 +- eng/consumebinaries.props | 5 +- eng/folderpaths.props | 21 +- eng/lightup.targets | 59 + eng/midl.targets | 4 +- eng/muxfinalrelease.props | 4 +- eng/packaging.props | 2 +- eng/sdkconfig.props | 30 +- eng/versions.props | 30 +- eng/winui-version.props | 2 +- packages.arm64.config | 2 +- packages.config | 8 +- packages.x64.config | 2 +- packages.x86.config | 2 +- .../BuildTasks/CompileXamlInternal.cs | 8 +- .../CodeGenerators/CSharpAppPass1.cs | 7 +- .../CodeGenerators/CSharpAppPass1.tt | 1 + .../Xaml/XamlCompiler/TypeInfoCollector.cs | 22 +- src/XamlCompiler/Directory.Build.props | 2 - ....UI.Xaml.Markup.Compiler.Executable.csproj | 1 + ...icrosoft.UI.Xaml.Markup.Compiler.IO.csproj | 19 +- ...Xaml.Markup.Compiler.MSBuildInterop.csproj | 1 + .../Microsoft.UI.Xaml.Markup.Compiler.csproj | 1 + .../Microsoft.UI.Xaml.Markup.csproj | 4 +- ...ft.UI.Xaml.Markup.Compiler.interop.targets | 10 +- src/projection/Directory.Build.props | 3 +- src/projection/Microsoft.WinUI.csproj | 4 +- src/projection/private/Microsoft.WinUI.csproj | 4 +- 420 files changed, 17131 insertions(+), 2828 deletions(-) create mode 100644 controls/dev/CommonStyles/TestUI/AppBarPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/AppBarPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/BlankPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/BlankPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/FlatItemsControlPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/FlatItemsControlPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/GroupedItemsControlPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/GroupedItemsControlPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/ItemsControlPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/ItemsControlPage.xaml.cs create mode 100644 controls/dev/CommonStyles/TestUI/NestedItemsControlsPage.xaml create mode 100644 controls/dev/CommonStyles/TestUI/NestedItemsControlsPage.xaml.cs create mode 100644 controls/dev/Generated/MapControl.properties.cpp create mode 100644 controls/dev/Generated/MapControl.properties.h create mode 100644 controls/dev/Generated/MapElement.properties.cpp create mode 100644 controls/dev/Generated/MapElementClickEventArgs.properties.cpp create mode 100644 controls/dev/Generated/MapElementsLayer.properties.cpp create mode 100644 controls/dev/Generated/MapElementsLayer.properties.h create mode 100644 controls/dev/Generated/MapIcon.properties.cpp create mode 100644 controls/dev/Generated/MapIcon.properties.h create mode 100644 controls/dev/Generated/MapLayer.properties.cpp create mode 100644 controls/dev/Generated/SelectorBar.properties.cpp create mode 100644 controls/dev/Generated/SelectorBar.properties.h create mode 100644 controls/dev/Generated/SelectorBarItem.properties.cpp create mode 100644 controls/dev/Generated/SelectorBarItem.properties.h create mode 100644 controls/dev/Generated/SelectorBarItemAutomationPeer.properties.cpp create mode 100644 controls/dev/Generated/SelectorBarTestHooks.properties.cpp create mode 100644 controls/dev/Lightup/Microsoft.UI.Xaml.Controls.Lightup.vcxproj create mode 100644 controls/dev/MapControl/APITests/MapControlTests.cs create mode 100644 controls/dev/MapControl/APITests/MapControl_APITests.projitems create mode 100644 controls/dev/MapControl/APITests/MapControl_APITests.shproj create mode 100644 controls/dev/MapControl/InteractionTests/MapControlTests.cs create mode 100644 controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.projitems create mode 100644 controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.shproj create mode 100644 controls/dev/MapControl/MapControl.cpp create mode 100644 controls/dev/MapControl/MapControl.h create mode 100644 controls/dev/MapControl/MapControl.idl create mode 100644 controls/dev/MapControl/MapControl.vcxitems create mode 100644 controls/dev/MapControl/MapControl.xaml create mode 100644 controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.cpp create mode 100644 controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.h create mode 100644 controls/dev/MapControl/MapElement.cpp create mode 100644 controls/dev/MapControl/MapElement.h create mode 100644 controls/dev/MapControl/MapElementClickEventArgs.cpp create mode 100644 controls/dev/MapControl/MapElementClickEventArgs.h create mode 100644 controls/dev/MapControl/MapElementsLayer.cpp create mode 100644 controls/dev/MapControl/MapElementsLayer.h create mode 100644 controls/dev/MapControl/MapIcon.cpp create mode 100644 controls/dev/MapControl/MapIcon.h create mode 100644 controls/dev/MapControl/MapLayer.cpp create mode 100644 controls/dev/MapControl/MapLayer.h create mode 100644 controls/dev/MapControl/TestUI/MapControlPage.xaml create mode 100644 controls/dev/MapControl/TestUI/MapControlPage.xaml.cs create mode 100644 controls/dev/MapControl/TestUI/MapControl_TestUI.projitems create mode 100644 controls/dev/MapControl/TestUI/MapControl_TestUI.shproj create mode 100644 controls/dev/MapControl/map.html rename controls/dev/NavigationView/{NavigationViewItemRevokers.h => NavigationViewItemBaseRevokers.h} (74%) create mode 100644 controls/dev/NavigationView/TestUI/CustomResources/CustomNavigationViewItem.xaml create mode 100644 controls/dev/NavigationView/TestUI/CustomResources/CustomNavigationViewItem.xaml.cs create mode 100644 controls/dev/NavigationView/TestUI/CustomResources/NavigationViewCustomMenuItemPage.xaml create mode 100644 controls/dev/NavigationView/TestUI/CustomResources/NavigationViewCustomMenuItemPage.xaml.cs create mode 100644 controls/dev/Repeater/TestUI/Samples/KeyboardNavigationSample.cs create mode 100644 controls/dev/Repeater/TestUI/Samples/KeyboardNavigationSample.xaml create mode 100644 controls/dev/ScrollView/ScrollViewLightup.cpp create mode 100644 controls/dev/SelectorBar/APITests/SelectorBarTests.cs create mode 100644 controls/dev/SelectorBar/APITests/SelectorBar_APITests.projitems create mode 100644 controls/dev/SelectorBar/APITests/SelectorBar_APITests.shproj create mode 100644 controls/dev/SelectorBar/InteractionTests/SelectorBarTests.cs create mode 100644 controls/dev/SelectorBar/InteractionTests/SelectorBar_InteractionTests.projitems create mode 100644 controls/dev/SelectorBar/InteractionTests/SelectorBar_InteractionTests.shproj create mode 100644 controls/dev/SelectorBar/SelectorBar.cpp create mode 100644 controls/dev/SelectorBar/SelectorBar.h create mode 100644 controls/dev/SelectorBar/SelectorBar.idl create mode 100644 controls/dev/SelectorBar/SelectorBar.vcxitems create mode 100644 controls/dev/SelectorBar/SelectorBar.xaml create mode 100644 controls/dev/SelectorBar/SelectorBarItem.cpp create mode 100644 controls/dev/SelectorBar/SelectorBarItem.h create mode 100644 controls/dev/SelectorBar/SelectorBarItemAutomationPeer.cpp create mode 100644 controls/dev/SelectorBar/SelectorBarItemAutomationPeer.h create mode 100644 controls/dev/SelectorBar/SelectorBarSelectionChangedEventArgs.cpp create mode 100644 controls/dev/SelectorBar/SelectorBarSelectionChangedEventArgs.h create mode 100644 controls/dev/SelectorBar/SelectorBarTestHooks.cpp create mode 100644 controls/dev/SelectorBar/SelectorBarTestHooks.h create mode 100644 controls/dev/SelectorBar/SelectorBarTestHooks.idl create mode 100644 controls/dev/SelectorBar/SelectorBarTestHooksFactory.cpp create mode 100644 controls/dev/SelectorBar/SelectorBarTestHooksFactory.h create mode 100644 controls/dev/SelectorBar/SelectorBarTrace.h create mode 100644 controls/dev/SelectorBar/SelectorBar_themeresources.xaml create mode 100644 controls/dev/SelectorBar/Strings/en-us/Resources.resw create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBarPage.xaml create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBarPage.xaml.cs create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml.cs create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBarSummaryPage.xaml create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBarSummaryPage.xaml.cs create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBar_TestUI.projitems create mode 100644 controls/dev/SelectorBar/TestUI/SelectorBar_TestUI.shproj rename controls/dev/Telemetry/{TraceLogging.cpp => MuxcTraceLogging.cpp} (98%) rename controls/dev/Telemetry/{TraceLogging.h => MuxcTraceLogging.h} (54%) create mode 100644 dxaml/xcp/dxaml/idl/winrt/main/windows.foundation.declarations.idl create mode 100644 dxaml/xcp/dxaml/lib/DXamlCoreLightup.cpp create mode 100644 dxaml/xcp/dxaml/lib/XamlShutdownCompletedOnThreadEventArgs_Partial.h create mode 100644 dxaml/xcp/dxaml/lib/winrtgeneratedclasses/XamlShutdownCompletedOnThreadEventArgs.g.cpp create mode 100644 dxaml/xcp/dxaml/lib/winrtgeneratedclasses/XamlShutdownCompletedOnThreadEventArgs.g.h delete mode 100644 dxaml/xcp/inc/DCompExtras.h delete mode 100644 dxaml/xcp/inc/platformsdk-uplevel/IUISettings6.h create mode 100644 eng/lightup.targets diff --git a/.vsconfig b/.vsconfig index db0cb114cd..5002da7427 100644 --- a/.vsconfig +++ b/.vsconfig @@ -13,11 +13,9 @@ "Microsoft.VisualStudio.Component.CoreEditor", "Microsoft.VisualStudio.Workload.CoreEditor", "Microsoft.VisualStudio.Component.VC.CoreIde", - "Microsoft.VisualStudio.Component.Windows10SDK", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "Microsoft.VisualStudio.Component.Windows11SDK.22000", - "Microsoft.VisualStudio.Component.Windows10SDK.19041", - "Microsoft.VisualStudio.Component.Windows10SDK.18362", + "Microsoft.VisualStudio.Component.Windows11SDK.22621", "Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging", "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", "Microsoft.VisualStudio.Component.VC.Tools.ARM64", diff --git a/.vsconfig_buildtools b/.vsconfig_buildtools index 47e081db07..da5ccf978f 100644 --- a/.vsconfig_buildtools +++ b/.vsconfig_buildtools @@ -19,10 +19,7 @@ "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", "Microsoft.VisualStudio.Component.VC.Tools.ARM64", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", - "Microsoft.VisualStudio.Component.Windows11SDK.22000", - "Microsoft.VisualStudio.Component.Windows10SDK", - "Microsoft.VisualStudio.Component.Windows10SDK.19041", - "Microsoft.VisualStudio.Component.Windows10SDK.18362", + "Microsoft.VisualStudio.Component.Windows11SDK.22621", "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", "Microsoft.VisualStudio.ComponentGroup.UWP.BuildTools", "Microsoft.VisualStudio.ComponentGroup.UWP.VC.BuildTools", diff --git a/Directory.Build.targets b/Directory.Build.targets index 31f92983e9..af0ed9eebf 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -9,7 +9,7 @@ - + @@ -21,4 +21,5 @@ + \ No newline at end of file diff --git a/controls/CppWinRT.props b/controls/CppWinRT.props index c02591b457..afac58d387 100644 --- a/controls/CppWinRT.props +++ b/controls/CppWinRT.props @@ -6,25 +6,25 @@ false true true - - -ignore_velocity true true true true - + false + false - - - - - - - + + $(CppWinRTParameters) -exclude Microsoft.UI.Xaml.Controls.ScrollViewer + + $(CppWinRTParameters) -ignore_velocity + \ No newline at end of file diff --git a/controls/FeatureAreas.props b/controls/FeatureAreas.props index 6d0330a233..0a1b311acc 100644 --- a/controls/FeatureAreas.props +++ b/controls/FeatureAreas.props @@ -213,6 +213,12 @@ + + + + + + true @@ -272,10 +278,12 @@ true true true + true + true $(DefineConstants);FEATURE_SCROLLPRESENTER_ENABLED $(DefineConstants);FEATURE_NAVIGATIONVIEW_ENABLED $(DefineConstants);INNERLOOP_BUILD - + \ No newline at end of file diff --git a/controls/MUXControls.sln b/controls/MUXControls.sln index 4ff7110ff3..0c08a0cfc8 100644 --- a/controls/MUXControls.sln +++ b/controls/MUXControls.sln @@ -644,6 +644,15 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "AnnotatedScrollBar_APITests EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.WinUI", "..\src\projection\Microsoft.WinUI.csproj", "{10F93BC6-DE0F-4B8D-A4C0-7A807935FD96}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MapControl", "MapControl", "{7E6C90B5-DD3F-4EFE-978B-E0BD4E031655}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MapControl", "dev\MapControl\MapControl.vcxitems", "{7C60C2AE-6ABC-4762-A0EF-1F50CDD0BA1E}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "MapControl_APITests", "dev\MapControl\APITests\MapControl_APITests.shproj", "{F350D71A-A980-4D63-A38A-8A2035DC4EF2}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "MapControl_TestUI", "dev\MapControl\TestUI\MapControl_TestUI.shproj", "{8C2F2FA6-5639-4C01-84D0-06E037824689}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "MapControl_InteractionTests", "dev\MapControl\InteractionTests\MapControl_InteractionTests.shproj", "{189F0B87-4CA1-4F77-8195-FC6DC714157A}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DesktopAcrylicBackdrop", "DesktopAcrylicBackdrop", "{0BEED10A-70BC-4103-8BC8-84D83A14EF75}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MicaBackdrop", "MicaBackdrop", "{AAEE68EF-8CB5-40D2-8BC8-9A00FB0A1B6A}" @@ -674,6 +683,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "private", "private", "{E3E0 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.WinUI", "..\src\projection\private\Microsoft.WinUI.csproj", "{DCDF77D5-B709-4052-B0D3-DD68BC9D3D5D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SelectorBar", "SelectorBar", "{BC59C0F9-07AC-44B2-BDF1-6533A1371BB2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SelectorBar", "dev\SelectorBar\SelectorBar.vcxitems", "{4C34195D-5F31-40A3-92AF-4CB8E5A762E0}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SelectorBar_InteractionTests", "dev\SelectorBar\InteractionTests\SelectorBar_InteractionTests.shproj", "{4BE74739-227A-4367-8DBA-AEC2769562C8}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SelectorBar_TestUI", "dev\SelectorBar\TestUI\SelectorBar_TestUI.shproj", "{1C950F53-542E-4CC4-9281-D9E36072A743}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SelectorBar_APITests", "dev\SelectorBar\APITests\SelectorBar_APITests.shproj", "{F778ACAE-150F-4D7D-83C1-5BF2E1ACB399}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_test|Any CPU = Debug_test|Any CPU @@ -1686,11 +1705,21 @@ Global {A1434CF9-0E2E-4F32-AC6B-F82816BFB936} = {6B593C05-B992-4B19-8FCE-2E078E72528A} {A1553559-5786-4B44-AB9E-94AB95C86D4D} = {6B593C05-B992-4B19-8FCE-2E078E72528A} {8FC55E63-37E7-4656-89BD-E3D78B31E2D4} = {6B593C05-B992-4B19-8FCE-2E078E72528A} - {10F93BC6-DE0F-4B8D-A4C0-7A807935FD96} = {3411D086-E07C-4C83-AEA7-930C51CB2518} + {10F93BC6-DE0F-4B8D-A4C0-7A807935FD96} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} + {7E6C90B5-DD3F-4EFE-978B-E0BD4E031655} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} + {7C60C2AE-6ABC-4762-A0EF-1F50CDD0BA1E} = {7E6C90B5-DD3F-4EFE-978B-E0BD4E031655} + {F350D71A-A980-4D63-A38A-8A2035DC4EF2} = {7E6C90B5-DD3F-4EFE-978B-E0BD4E031655} + {8C2F2FA6-5639-4C01-84D0-06E037824689} = {7E6C90B5-DD3F-4EFE-978B-E0BD4E031655} + {189F0B87-4CA1-4F77-8195-FC6DC714157A} = {7E6C90B5-DD3F-4EFE-978B-E0BD4E031655} {0BEED10A-70BC-4103-8BC8-84D83A14EF75} = {414D2AE4-5B65-43E1-9C11-D94817835B3D} {AAEE68EF-8CB5-40D2-8BC8-9A00FB0A1B6A} = {414D2AE4-5B65-43E1-9C11-D94817835B3D} {E3E05AF9-A9DA-4777-B335-684664BC403E} = {3411D086-E07C-4C83-AEA7-930C51CB2518} {DCDF77D5-B709-4052-B0D3-DD68BC9D3D5D} = {E3E05AF9-A9DA-4777-B335-684664BC403E} + {BC59C0F9-07AC-44B2-BDF1-6533A1371BB2} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} + {4C34195D-5F31-40A3-92AF-4CB8E5A762E0} = {BC59C0F9-07AC-44B2-BDF1-6533A1371BB2} + {4BE74739-227A-4367-8DBA-AEC2769562C8} = {BC59C0F9-07AC-44B2-BDF1-6533A1371BB2} + {1C950F53-542E-4CC4-9281-D9E36072A743} = {BC59C0F9-07AC-44B2-BDF1-6533A1371BB2} + {F778ACAE-150F-4D7D-83C1-5BF2E1ACB399} = {BC59C0F9-07AC-44B2-BDF1-6533A1371BB2} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D93836AB-52D3-4DE2-AE25-23F26F55ECED} @@ -1714,10 +1743,12 @@ Global dev\MenuBar\MenuBar_InteractionTests\MenuBar_InteractionTests.projitems*{1440a7b7-d3ca-4390-8c85-e1e9a7df8542}*SharedItemsImports = 13 dev\Effects\Microsoft.UI.Private.Composition.Effects.vcxitems*{1522a856-17ce-4178-a6b3-0692f90d7c55}*SharedItemsImports = 9 dev\CommandBarFlyout\InteractionTests\CommandBarFlyout_InteractionTests.projitems*{16f32f80-a8b6-44e0-9d99-0e1c2c8e0579}*SharedItemsImports = 13 + dev\MapControl\InteractionTests\MapControl_InteractionTests.projitems*{189f0b87-4ca1-4f77-8195-fc6dc714157a}*SharedItemsImports = 13 dev\TeachingTip\APITests\TeachingTip_APITests.projitems*{18f1db69-7457-461c-9d19-7f42bffc0803}*SharedItemsImports = 13 dev\IconSource\IconSource.vcxitems*{19ffff77-4814-4ad6-acd7-42c6a50ab0d8}*SharedItemsImports = 9 dev\ProgressBar\TestUI\ProgressBar_TestUI.projitems*{1a5321f3-b837-4eb6-9547-37cc70088ea9}*SharedItemsImports = 13 dev\NavigationView\NavigationView.vcxitems*{1b8ef049-a38e-43e4-b88e-f1ebfcef07d2}*SharedItemsImports = 9 + dev\SelectorBar\TestUI\SelectorBar_TestUI.projitems*{1c950f53-542e-4cc4-9281-d9e36072a743}*SharedItemsImports = 13 dev\TabView\TestUI\TabView_TestUI.projitems*{1d87aac7-1e11-40fc-90a7-b6ce1c4567ae}*SharedItemsImports = 13 dev\Materials\Reveal\InteractionTests\Reveal_InteractionTests\Reveal_InteractionTests.projitems*{1f2872e7-28c9-4c01-88ed-73c43ee1c9a4}*SharedItemsImports = 13 dev\InfoBadge\TestUI\InfoBadge_TestUI.projitems*{1f30cac6-7efb-4ce9-b119-64821c117cb9}*SharedItemsImports = 13 @@ -1762,6 +1793,8 @@ Global dev\Materials\Reveal\RevealBrush.vcxitems*{4993a99d-57ae-4ee7-a3c1-0840ed127608}*SharedItemsImports = 9 dev\TeachingTip\TeachingTip.vcxitems*{499b8bf7-bca1-4c23-baa7-59e2c551be4b}*SharedItemsImports = 9 dev\ColorPicker\TestUI\ColorPicker_TestUI.projitems*{4a87b4f1-4b6f-435a-950e-b2bb32a16001}*SharedItemsImports = 13 + dev\SelectorBar\InteractionTests\SelectorBar_InteractionTests.projitems*{4be74739-227a-4367-8dba-aec2769562c8}*SharedItemsImports = 13 + dev\SelectorBar\SelectorBar.vcxitems*{4c34195d-5f31-40a3-92af-4cb8e5a762e0}*SharedItemsImports = 9 dev\AnimatedVisualPlayer\InteractionTests\AnimatedVisualPlayer_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\AnnotatedScrollBar\InteractionTests\AnnotatedScrollBar_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\AutoSuggestBox\InteractionTests\AutoSuggestBox_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 @@ -1778,6 +1811,8 @@ Global dev\Interactions\SliderInteraction\InteractionTests\SliderInteraction_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\ItemContainer\InteractionTests\ItemContainer_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\ItemsView\InteractionTests\ItemsView_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 + dev\MapControl\InteractionTests\MapControl_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 + dev\SelectorBar\InteractionTests\SelectorBar_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\Materials\Acrylic\InteractionTests\AcrylicBrush_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\Materials\Reveal\InteractionTests\Reveal_InteractionTests\Reveal_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 dev\MenuBar\MenuBar_InteractionTests\MenuBar_InteractionTests.projitems*{4d8c5d1b-f982-44a1-b744-dd0e51651bf2}*SharedItemsImports = 5 @@ -1837,6 +1872,10 @@ Global dev\ItemsView\APITests\ItemsView_APITests.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 dev\ItemsView\TestUI\ItemsView_TestUI.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 dev\LayoutPanel\APITests\LayoutPanel_APITests.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 + dev\MapControl\APITests\MapControl_APITests.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 + dev\MapControl\TestUI\MapControl_TestUI.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 + dev\SelectorBar\APITests\SelectorBar_APITests.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 + dev\SelectorBar\TestUI\SelectorBar_TestUI.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 dev\Materials\Acrylic\APITests\AcrylicBrush_ApiTests.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 dev\Materials\Acrylic\TestUI\AcrylicBrush_TestUI.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 dev\Materials\Reveal\APITests\Reveal_APITests.projitems*{4e6f8103-9e20-40dd-8fe0-1e73964bb800}*SharedItemsImports = 5 @@ -1916,6 +1955,7 @@ Global dev\NumberBox\InteractionTests\NumberBox_InteractionTests.projitems*{773f7592-e7b3-42fc-a14a-e815afd6a0cb}*SharedItemsImports = 13 dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\InteractionTests\ScrollViewerAdapter_InteractionTests.projitems*{79863454-1dbf-45bb-b3d3-420b8f5e8705}*SharedItemsImports = 13 dev\ItemsView\ItemsView.vcxitems*{7b5f5ca3-084c-58a0-97da-b8c488cc3e30}*SharedItemsImports = 9 + dev\MapControl\MapControl.vcxitems*{7c60c2ae-6abc-4762-a0ef-1f50cdd0ba1e}*SharedItemsImports = 9 dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\TestUI\ScrollViewerAdapter_TestUI.projitems*{7dc019ed-239f-4a84-b623-3e377db02a70}*SharedItemsImports = 13 dev\NavigationView\TestUI\NavigationView_TestUI.projitems*{7ee5e585-090a-44bf-a950-80636e242327}*SharedItemsImports = 13 dev\Common\Common.vcxitems*{80ad7f51-8997-47b9-bb41-078b81cff9b0}*SharedItemsImports = 9 @@ -1933,6 +1973,7 @@ Global dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{8b056b8f-c1ab-4a80-bd17-deace9897e6a}*SharedItemsImports = 9 dev\MenuBar\MenuBar.vcxitems*{8bc9ceb8-8b4a-11d0-8d11-00a0c91bc942}*SharedItemsImports = 9 dev\ProgressRing\InteractionTests\ProgressRing_InteractionTests.projitems*{8c2d60af-44bc-47da-8e44-d62e639bfc0a}*SharedItemsImports = 13 + dev\MapControl\TestUI\MapControl_TestUI.projitems*{8c2f2fa6-5639-4c01-84d0-06e037824689}*SharedItemsImports = 13 dev\TwoPaneView\TwoPaneView.vcxitems*{8d0e4610-b51d-45c1-8b82-240bd2f73a92}*SharedItemsImports = 9 dev\Repeater\APITests\Repeater_APITests.projitems*{8d2da979-6313-49e2-8cf3-b568436d2944}*SharedItemsImports = 13 dev\Interactions\ButtonInteraction\APITests\ButtonInteraction_APITests.projitems*{8dc0ea14-d850-4c6e-8918-beeb89e877bd}*SharedItemsImports = 13 @@ -2016,10 +2057,12 @@ Global dev\ImageIcon\InteractionTests\ImageIcon_InteractionTests.projitems*{f14fb632-e705-44bc-9415-75b539f483e1}*SharedItemsImports = 13 dev\AnimatedIcon\AnimatedIcon.vcxitems*{f1c8a5a1-b1b0-4095-8849-e550fcf2ebf6}*SharedItemsImports = 9 dev\PullToRefresh\RefreshContainer\InteractionTests\RefreshContainer_InteractionTests.projitems*{f30fe0d3-2e44-405e-8519-ec3ab098c41f}*SharedItemsImports = 13 + dev\MapControl\APITests\MapControl_APITests.projitems*{f350d71a-a980-4d63-a38a-8a2035dc4ef2}*SharedItemsImports = 13 dev\InfoBar\InteractionTests\InfoBar_InteractionTests.projitems*{f470a64e-780e-45aa-abb7-73a8734e51d7}*SharedItemsImports = 13 dev\InfoBadge\InteractionTests\InfoBadge_InteractionTests.projitems*{f55ab8bf-f828-4a2e-bcdf-68f22aed35c3}*SharedItemsImports = 13 dev\SplitView\SplitView.vcxitems*{f567d0a2-9c61-4793-ae79-12da915ac11f}*SharedItemsImports = 9 dev\Materials\Acrylic\InteractionTests\AcrylicBrush_InteractionTests.projitems*{f601284a-00c1-49f9-99b3-70d45585f784}*SharedItemsImports = 13 + dev\SelectorBar\APITests\SelectorBar_APITests.projitems*{f778acae-150f-4d7d-83c1-5bf2e1acb399}*SharedItemsImports = 13 dev\SplitButton\SplitButton.vcxitems*{faf114dd-af1f-4d9f-a511-354c19912aad}*SharedItemsImports = 9 test\TestAppUtils\TestAppUtils.projitems*{fb0d3053-3135-403f-b542-977f3b781673}*SharedItemsImports = 13 dev\CommonManaged\CommonManaged.projitems*{fcc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 diff --git a/controls/MUXControlsInnerLoop.sln b/controls/MUXControlsInnerLoop.sln index 3895905047..22ed0344a4 100644 --- a/controls/MUXControlsInnerLoop.sln +++ b/controls/MUXControlsInnerLoop.sln @@ -1,7 +1,6 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29009.5 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33815.320 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dev", "dev", "{67599AD5-51EC-44CB-85CE-B60CD8CBA270}" EndProject @@ -120,7 +119,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Materials", "Materials", "{ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Acrylic", "Acrylic", "{96707BBD-8D2A-4715-8DDA-3A60E4AF9914}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AcrylicBrush", "dev\Materials\Acrylic\AcrylicBrush.vcxitems", "{3AFFD0CE-C682-4E59-A9D4-BE8EC3F485DA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AcrylicBrush", "dev\Materials\Acrylic\AcrylicBrush.vcxitems", "{76353825-06F5-4EA2-BB96-D6A9BB8B6545}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DesktopAcrylicBackdrop", "dev\Materials\DesktopAcrylicBackdrop\DesktopAcrylicBackdrop.vcxitems", "{CC231572-D8DB-4D9D-A687-1690F9E8B169}" EndProject @@ -460,11 +459,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Breadcrumb", "Breadcrumb", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BreadcrumbBar", "dev\Breadcrumb\Breadcrumb.vcxitems", "{563FE343-C6B0-447B-831A-B0CE3AA7A688}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Breadcrumb_APITests", "dev\Breadcrumb\APITests\BreadcrumbBar_APITests.shproj", "{48DF0143-C6A7-4184-BCC4-E59EAC5D49F1}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BreadcrumbBar_APITests", "dev\Breadcrumb\APITests\BreadcrumbBar_APITests.shproj", "{48DF0143-C6A7-4184-BCC4-E59EAC5D49F1}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Breadcrumb_TestUI", "dev\Breadcrumb\TestUI\BreadcrumbBar_TestUI.shproj", "{657121B7-3E4F-4C76-ABE2-0221A7997929}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BreadcrumbBar_TestUI", "dev\Breadcrumb\TestUI\BreadcrumbBar_TestUI.shproj", "{657121B7-3E4F-4C76-ABE2-0221A7997929}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Breadcrumb_InteractionTests", "dev\Breadcrumb\InteractionTests\BreadcrumbBar_InteractionTests.shproj", "{C1477378-4A7A-43E5-8499-98A23544CC8A}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BreadcrumbBar_InteractionTests", "dev\Breadcrumb\InteractionTests\BreadcrumbBar_InteractionTests.shproj", "{C1477378-4A7A-43E5-8499-98A23544CC8A}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PipsPager", "PipsPager", "{AA960C72-877F-4F3C-92D2-7ADD34D643F4}" EndProject @@ -520,215 +519,17 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "InfoBadge_InteractionTests" EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ProgressRing_APITests", "dev\ProgressRing\APITests\ProgressRing_APITests.shproj", "{222EF6F6-0845-49E7-81F2-9686CEF85C67}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MapControl", "MapControl", "{1CEADA92-1E59-4265-B3A3-0A0490F1360A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MapControl", "dev\MapControl\MapControl.vcxitems", "{7C60C2AE-6ABC-4762-A0EF-1F50CDD0BA1E}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "MapControl_APITests", "dev\MapControl\APITests\MapControl_APITests.shproj", "{F350D71A-A980-4D63-A38A-8A2035DC4EF2}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "MapControl_TestUI", "dev\MapControl\TestUI\MapControl_TestUI.shproj", "{8C2F2FA6-5639-4C01-84D0-06E037824689}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "MapControl_InteractionTests", "dev\MapControl\InteractionTests\MapControl_InteractionTests.shproj", "{189F0B87-4CA1-4F77-8195-FC6DC714157A}" +EndProject Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - dev\ComboBox\ComboBox.vcxitems*{00523caf-422a-4185-9392-d374b72a019a}*SharedItemsImports = 9 - dev\ParallaxView\TestUI\ParallaxView_TestUI.projitems*{00c52fd5-42fd-33b4-84a0-795c9b5a014d}*SharedItemsImports = 13 - dev\lights\ApiTests\Lights_ApiTests\Lights_ApiTests.projitems*{02ed27be-97e4-4327-bb96-8b3fa6869c48}*SharedItemsImports = 13 - dev\RadioButtons\APITests\RadioButtons_APITests.projitems*{0352711a-d79a-4d82-8255-916d29522ae0}*SharedItemsImports = 13 - dev\SampleControl\TestUI\SampleControl_TestUI.projitems*{05361409-7fbb-4296-996f-2e591857d84a}*SharedItemsImports = 13 - dev\Telemetry\Telemetry.vcxitems*{0db22ba9-6053-459b-baf5-e82ea1c78ab3}*SharedItemsImports = 9 - dev\ScrollPresenter\TestUI\ScrollPresenter_TestUI.projitems*{0ec52fd5-42fe-3eb4-84e0-79ec9b5a014e}*SharedItemsImports = 13 - dev\ProgressBar\ProgressBar.vcxitems*{0f61c8bd-d066-4812-a02b-e95ce18a985d}*SharedItemsImports = 9 - test\testinfra\MUXTestInfra\MUXTestInfra.Shared.projitems*{107794d7-4be0-407e-a76c-efa46d1e9f93}*SharedItemsImports = 13 - dev\RatingControl\TestUI\RatingControl_TestUI.projitems*{10c52fd4-52fc-43b3-94af-895c9b5a014c}*SharedItemsImports = 13 - dev\Interactions\ButtonInteraction\TestUI\ButtonInteraction_TestUI.projitems*{11b35f24-72b2-4228-9960-0d1ea283e1af}*SharedItemsImports = 13 - dev\CommandBarFlyout\CommandBarFlyout.vcxitems*{11c085ff-8f68-48ee-9949-6eecbd0cbe6c}*SharedItemsImports = 9 - dev\TwoPaneView\InteractionTests\TwoPaneView_InteractionTests.projitems*{1294409d-9bad-40cc-a74d-9ab29b343071}*SharedItemsImports = 13 - dev\NumberBox\TestUI\NumberBox_TestUI.projitems*{13da8235-d04f-46d4-b5b4-f5ae774eeede}*SharedItemsImports = 13 - dev\MenuBar\MenuBar_InteractionTests\MenuBar_InteractionTests.projitems*{1440a7b7-d3ca-4390-8c85-e1e9a7df8542}*SharedItemsImports = 13 - dev\Effects\Microsoft.UI.Private.Composition.Effects.vcxitems*{1522a856-17ce-4178-a6b3-0692f90d7c55}*SharedItemsImports = 9 - dev\CommandBarFlyout\InteractionTests\CommandBarFlyout_InteractionTests.projitems*{16f32f80-a8b6-44e0-9d99-0e1c2c8e0579}*SharedItemsImports = 13 - dev\TeachingTip\APITests\TeachingTip_APITests.projitems*{18f1db69-7457-461c-9d19-7f42bffc0803}*SharedItemsImports = 13 - dev\IconSource\IconSource.vcxitems*{19ffff77-4814-4ad6-acd7-42c6a50ab0d8}*SharedItemsImports = 9 - dev\ProgressBar\TestUI\ProgressBar_TestUI.projitems*{1a5321f3-b837-4eb6-9547-37cc70088ea9}*SharedItemsImports = 13 - dev\NavigationView\NavigationView.vcxitems*{1b8ef049-a38e-43e4-b88e-f1ebfcef07d2}*SharedItemsImports = 9 - dev\TabView\TestUI\TabView_TestUI.projitems*{1d87aac7-1e11-40fc-90a7-b6ce1c4567ae}*SharedItemsImports = 13 - dev\Materials\Reveal\InteractionTests\Reveal_InteractionTests\Reveal_InteractionTests.projitems*{1f2872e7-28c9-4c01-88ed-73c43ee1c9a4}*SharedItemsImports = 13 - dev\InfoBadge\TestUI\InfoBadge_TestUI.projitems*{1f30cac6-7efb-4ce9-b119-64821c117cb9}*SharedItemsImports = 13 - dev\ScrollView\TestUI\ScrollView_TestUI.projitems*{20c52fd5-62fd-53b4-a4a0-995c9b5a014d}*SharedItemsImports = 13 - dev\ItemsView\TestUI\ItemsView_TestUI.projitems*{30c62ff5-72fe-52b6-a2a1-a95b9b8a0241}*SharedItemsImports = 13 - dev\ProgressRing\APITests\ProgressRing_APITests.projitems*{222ef6f6-0845-49e7-81f2-9686cef85c67}*SharedItemsImports = 13 - dev\PagerControl\TestUI\PagerControl_TestUI.projitems*{225c4174-3141-49b8-ade2-c7d3408d5103}*SharedItemsImports = 13 - dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\ScrollViewerIRefreshInfoProviderAdapter.vcxitems*{22a3d1c4-4d1c-4b04-b695-8fec39bfed86}*SharedItemsImports = 9 - dev\Interactions\ButtonInteraction\ButtonInteraction.vcxitems*{2459bc06-2ae5-4c65-ba73-ab28090b6fab}*SharedItemsImports = 9 - dev\ColorPicker\ColorPicker.vcxitems*{248cc96d-67a2-4359-a4e3-ab0dad110a1e}*SharedItemsImports = 9 - dev\RatingControl\APITests\RatingControl_APITests.projitems*{274b93f7-cd18-4ed9-b569-0640529d187b}*SharedItemsImports = 13 - dev\ImageIcon\APITests\ImageIcon_APITests.projitems*{27aae2e5-9687-4120-822f-cdb68b9a65b7}*SharedItemsImports = 13 - dev\SplitButton\TestUI\SplitButton_TestUI.projitems*{280c91f4-96b5-4bde-9e02-e573e1def583}*SharedItemsImports = 13 - dev\Repeater\TestUI\Repeater_TestUI.projitems*{2ed883f5-20db-4445-8c96-517a21e5e657}*SharedItemsImports = 13 - dev\TabView\APITests\TabView_APITests.projitems*{2f4e95e9-f729-481c-b9aa-c9bec91ae395}*SharedItemsImports = 13 - dev\SampleControl\InteractionTests\SampleControl_InteractionTests.projitems*{30120040-3eb8-404d-9344-5e99e34b6090}*SharedItemsImports = 13 - dev\MenuFlyout\TestUI\MenuFlyout_TestUI.projitems*{2ef860e2-8766-41fc-bde2-e6b18bb8c206}*SharedItemsImports = 13 - dev\TabView\APITests\TabView_APITests.projitems*{2f4e95e9-f729-481c-b9aa-c9bec91ae395}*SharedItemsImports = 13 - dev\ParallaxView\ParallaxView.vcxitems*{3095445a-afcd-5154-ac36-9770e6ec1aa5}*SharedItemsImports = 9 - dev\InfoBar\TestUI\InfoBar_TestUI.projitems*{32dfaf1e-c2ec-4c52-a4d8-b3a3946242b4}*SharedItemsImports = 13 - dev\RadioMenuFlyoutItem\RadioMenuFlyoutItem.vcxitems*{3353a4a7-87b3-4e43-8f8d-43c7380d1d56}*SharedItemsImports = 9 - dev\Lights\Lights.vcxitems*{3479a3ae-2854-4bec-80ab-eab0772cb90a}*SharedItemsImports = 9 - dev\ScrollPresenter\ScrollPresenter.vcxitems*{359544aa-a8cd-715c-cc36-f770e6e81aa0}*SharedItemsImports = 9 - dev\ParallaxView\APITests\ParallaxView_APITests.projitems*{374b93f7-cd18-4ed9-b569-0640529d187c}*SharedItemsImports = 13 - dev\ScrollView\APITests\ScrollView_APITests.projitems*{374b93f8-dd19-5eda-c56a-1640529d187c}*SharedItemsImports = 13 - dev\ItemsView\APITests\ItemsView_APITests.projitems*{283c02a7-ce19-5fd9-c66b-2640029d9876}*SharedItemsImports = 13 - dev\Collections\Collections.vcxitems*{395a71a1-4327-477b-85d4-af0851732ccb}*SharedItemsImports = 9 - dev\CommonStyles\CommonStyles.vcxitems*{3a07fa59-c5c1-4b46-8b31-043f9ca91226}*SharedItemsImports = 9 - dev\Materials\Acrylic\AcrylicBrush.vcxitems*{3affd0ce-c682-4e59-a9d4-be8ec3f485da}*SharedItemsImports = 9 - dev\ProgressBar\InteractionTests\ProgressBar_InteractionTests.projitems*{3d044ec1-c9d3-4745-b79e-e7bed66e93f8}*SharedItemsImports = 13 - dev\AutoSuggestBox\AutoSuggestBox.vcxitems*{417000d9-2641-4629-99f2-8f6033a6ac52}*SharedItemsImports = 9 - dev\TeachingTip\TestUI\TeachingTip_TestUI.projitems*{42a51d3e-f06a-41a0-be4c-f94cddb80678}*SharedItemsImports = 13 - dev\RadioButtons\InteractionTests\RadioButtons_InteractionTests.projitems*{42d6e8f9-59fe-4ca5-83eb-69a7622f5742}*SharedItemsImports = 13 - dev\TwoPaneView\APITests\TwoPaneView_APITests.projitems*{44deafbc-bb7a-4b02-aeab-29df2c2f8587}*SharedItemsImports = 13 - dev\PipsPager\TestUI\PipsPager_TestUI.projitems*{44f0e6bc-6222-4f16-8050-bb31dd804c4a}*SharedItemsImports = 13 - dev\ResourceHelper\ResourceHelper.vcxitems*{45d41acc-2c3c-43d2-bc10-02aa73ffc7c7}*SharedItemsImports = 9 - dev\ScrollPresenter\APITests\ScrollPresenter_APITests.projitems*{474b92f7-cd58-fed9-8569-9640529d1871}*SharedItemsImports = 13 - dev\NavigationView\NavigationView_InteractionTests\NavigationView_InteractionTests.projitems*{475c3a33-637a-44dc-b789-6c2d78a75283}*SharedItemsImports = 13 - dev\AutoSuggestBox\TestUI\AutoSuggestBox_TestUI.projitems*{48bf2dab-82b5-4705-a880-f5310fb697f9}*SharedItemsImports = 13 - dev\Breadcrumb\APITests\Breadcrumb_APITests.projitems*{48df0143-c6a7-4184-bcc4-e59eac5d49f1}*SharedItemsImports = 13 - dev\Interactions\SliderInteraction\APITests\SliderInteraction_APITests.projitems*{48f7b68b-8050-4523-8374-963aa3b2834f}*SharedItemsImports = 13 - dev\Materials\Reveal\RevealBrush.vcxitems*{4993a99d-57ae-4ee7-a3c1-0840ed127608}*SharedItemsImports = 9 - dev\TeachingTip\TeachingTip.vcxitems*{499b8bf7-bca1-4c23-baa7-59e2c551be4b}*SharedItemsImports = 9 - dev\ColorPicker\TestUI\ColorPicker_TestUI.projitems*{4a87b4f1-4b6f-435a-950e-b2bb32a16001}*SharedItemsImports = 13 - dev\PagerControl\InteractionTests\PagerControl_InteractionTests.projitems*{4f64c819-664f-436a-bcdb-8ab3019b9dd5}*SharedItemsImports = 13 - dev\Materials\Reveal\APITests\Reveal_APITests.projitems*{5049ea6c-88ce-4ed5-8692-947eec9e52bc}*SharedItemsImports = 13 - dev\Expander\TestUI\Expander_TestUI.projitems*{50c1f1d3-20aa-49a8-9e4c-cf4e5811a1d8}*SharedItemsImports = 13 - dev\RadioMenuFlyoutItem\TestUI\RadioMenuFlyoutItem_TestUI.projitems*{50e838a2-a886-46c9-ab0b-a57f510ce643}*SharedItemsImports = 13 - dev\PersonPicture\APITests\PersonPicture_APITests.projitems*{5243ef2c-f250-48bd-b633-39cc2a0a38aa}*SharedItemsImports = 13 - dev\MonochromaticOverlayPresenter\TestUI\MonochromaticOverlayPresenter_TestUI.projitems*{52aaa6ed-e5a0-41bb-8858-66249333a8d4}*SharedItemsImports = 13 - dev\PullToRefresh\TestUI\PTR_TestUI.projitems*{549c8eb7-e099-4eab-a1f6-faa3fa79b9e0}*SharedItemsImports = 13 - dev\MenuBar\MenuBar_TestUI\MenuBar_TestUI.projitems*{55cb08ca-19fe-4db9-8160-a4ec47984b95}*SharedItemsImports = 13 - dev\Breadcrumb\Breadcrumb.vcxitems*{563fe343-c6b0-447b-831a-b0ce3aa7a688}*SharedItemsImports = 9 - dev\Materials\Acrylic\APITests\AcrylicBrush_ApiTests.projitems*{593e15d8-f6f9-4aba-ba65-c6927c178dbd}*SharedItemsImports = 13 - dev\Materials\Reveal\TestUI\Reveal_TestUI.projitems*{5bf80ae9-29df-4be9-858a-f095c8073473}*SharedItemsImports = 13 - dev\PersonPicture\PersonPicture.vcxitems*{5fdf2501-aa3d-4082-ad45-d1f2a94c1213}*SharedItemsImports = 9 - dev\ProgressRing\ProgressRing.vcxitems*{64447efa-19b4-4bf2-9d63-618635c483ec}*SharedItemsImports = 9 - dev\SampleControl\APITests\SampleControl_APITests.projitems*{65521a02-7166-48be-b524-8f8f0ecc3a76}*SharedItemsImports = 13 - dev\RatingControl\RatingControl.vcxitems*{655f5da8-f87b-45af-88d1-a884881c3edf}*SharedItemsImports = 9 - dev\Breadcrumb\TestUI\Breadcrumb_TestUI.projitems*{657121b7-3e4f-4c76-abe2-0221a7997929}*SharedItemsImports = 13 - test\MUXControlsTestApp\MUXControlsTestApp.Shared.projitems*{6aa772a6-cbf7-4ff3-8864-bc9366015dc2}*SharedItemsImports = 13 - dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.projitems*{74d18b1b-5f6b-4534-945b-131e8e3206fb}*SharedItemsImports = 13 - dev\ScrollView\ScrollView.vcxitems*{755f5da9-087c-55a0-98d2-b884881c3ed0}*SharedItemsImports = 9 - dev\ItemsView\ItemsView.vcxitems*{7b5f5ca3-084c-58a0-97da-b8c488cc3e30}*SharedItemsImports = 9 - dev\NumberBox\InteractionTests\NumberBox_InteractionTests.projitems*{773f7592-e7b3-42fc-a14a-e815afd6a0cb}*SharedItemsImports = 13 - dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\InteractionTests\ScrollViewerAdapter_InteractionTests.projitems*{79863454-1dbf-45bb-b3d3-420b8f5e8705}*SharedItemsImports = 13 - dev\NavigationView\TestUI\NavigationView_TestUI.projitems*{7ee5e585-090a-44bf-a950-80636e242327}*SharedItemsImports = 13 - dev\Common\Common.vcxitems*{80ad7f51-8997-47b9-bb41-078b81cff9b0}*SharedItemsImports = 9 - dev\NumberBox\APITests\NumberBox_APITests.projitems*{80af98ca-bc1d-4011-8460-5671799ec419}*SharedItemsImports = 13 - dev\Interactions\SliderInteraction\TestUI\SliderInteraction_TestUI.projitems*{80f1f883-d49b-407d-9e77-c9b0e62b61a9}*SharedItemsImports = 13 - dev\RadioButtons\TestUI\RadioButtons_TestUI.projitems*{833a6892-a079-469a-81c7-54d4cd88029b}*SharedItemsImports = 13 - dev\AnimatedIcon\TestUI\AnimatedIcon_TestUI.projitems*{83fd36c0-189f-4e95-8002-9b73905ca301}*SharedItemsImports = 13 - dev\TestHooks\TestHooks.vcxitems*{848448d5-f717-4f88-8f99-311cd60587fa}*SharedItemsImports = 9 - dev\CommonManaged\CommonManaged.projitems*{85a134e5-c83f-44a4-80df-59f6ebf6c60d}*SharedItemsImports = 13 - dev\DropDownButton\DropDownButton.vcxitems*{8613ed91-ade3-4c5c-a09a-041187841eb3}*SharedItemsImports = 9 - dev\PullToRefresh\PTRTracing\PTRTracing.vcxitems*{890a5548-0515-4099-b526-0539fe9a0376}*SharedItemsImports = 9 - dev\RadioMenuFlyoutItem\InteractionTests\RadioMenuFlyoutItem_InteractionTests.projitems*{89ec8d06-ca59-49a9-aefe-32dcc9dd8020}*SharedItemsImports = 13 - dev\PersonPicture\TestUI\PersonPicture_TestUI.projitems*{8a1690fb-aa8c-461a-840c-89cdbb44bdba}*SharedItemsImports = 13 - dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{8b056b8f-c1ab-4a80-bd17-deace9897e6a}*SharedItemsImports = 9 - dev\MenuBar\MenuBar.vcxitems*{8bc9ceb8-8b4a-11d0-8d11-00a0c91bc942}*SharedItemsImports = 9 - dev\ProgressRing\InteractionTests\ProgressRing_InteractionTests.projitems*{8c2d60af-44bc-47da-8e44-d62e639bfc0a}*SharedItemsImports = 13 - dev\TwoPaneView\TwoPaneView.vcxitems*{8d0e4610-b51d-45c1-8b82-240bd2f73a92}*SharedItemsImports = 9 - dev\Repeater\APITests\Repeater_APITests.projitems*{8d2da979-6313-49e2-8cf3-b568436d2944}*SharedItemsImports = 13 - dev\Interactions\ButtonInteraction\APITests\ButtonInteraction_APITests.projitems*{8dc0ea14-d850-4c6e-8918-beeb89e877bd}*SharedItemsImports = 13 - dev\CommandBarFlyout\APITests\CommandBarFlyout_APITests.projitems*{8f6f9336-c45c-40c1-abda-3679a20434b1}*SharedItemsImports = 13 - dev\ScrollPresenter\InteractionTests\ScrollPresenter_InteractionTests.projitems*{8faad013-139c-8d2a-2285-45f717d9e64a}*SharedItemsImports = 13 - dev\PullToRefresh\RefreshContainer\RefreshContainer.vcxitems*{94aaadf1-80ca-45a7-9bd8-c6d00d58334d}*SharedItemsImports = 9 - dev\DropDownButton\TestUI\DropDownButton_TestUI.projitems*{954d7000-c06f-49eb-a7d2-0df83de6ca35}*SharedItemsImports = 13 - dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\APITests\APITests.projitems*{999c289e-5ad6-4700-a44e-e85b696e508a}*SharedItemsImports = 13 - dev\Repeater\InteractionTests\Repeater_InteractionTests.projitems*{999e00c9-0e58-402a-8e0e-cbafb0adc7e3}*SharedItemsImports = 13 - dev\SwipeControl\SwipeControl_InteractionTests\SwipeControl_InteractionTests.projitems*{9a8da438-193c-4950-a046-2952de2d3b0b}*SharedItemsImports = 13 - dev\TwoPaneView\TestUI\TwoPaneView_TestUI.projitems*{9c533ec3-f8fa-4b0e-ba1b-3323932cdfcb}*SharedItemsImports = 13 - dev\PipsPager\APITests\PipsPager_APITests.projitems*{9cf0d73a-e435-4c17-a41c-11e9fa3eea2f}*SharedItemsImports = 13 - dev\NumberBox\NumberBox.vcxitems*{9d23c997-1f46-444a-8c07-4a4bff7e4e63}*SharedItemsImports = 9 - dev\ImageIcon\ImageIcon.vcxitems*{9fb38577-696e-47ba-8ae2-f48a3c84a7ca}*SharedItemsImports = 9 - dev\Repeater\Repeater.vcxitems*{a0aa8919-2140-42db-beb1-b2c3ace594f4}*SharedItemsImports = 9 - dev\CommonStyles\InteractionTests\CommonStyles_InteractionTests.projitems*{a25ae312-7c11-4e30-ae35-2e31c744a250}*SharedItemsImports = 13 - dev\SampleControl\SampleControl.vcxitems*{a329fb8a-3093-4050-83d3-4d9f5847f3b8}*SharedItemsImports = 9 - dev\ColorPicker\InteractionTests\ColorPicker_InteractionTests.projitems*{a4d2fae8-e7fc-4100-91ff-2202fac91c70}*SharedItemsImports = 13 - dev\CommonStyles\TestUI\CommonStyles_TestUI.projitems*{a7f6d6c4-a5a9-43eb-930c-b766417a5e5c}*SharedItemsImports = 13 - dev\Materials\Acrylic\TestUI\AcrylicBrush_TestUI.projitems*{a800e818-7212-4fd7-ae3a-1dcab539db87}*SharedItemsImports = 13 - dev\PagerControl\PagerControl.vcxitems*{ab3261a7-9a8d-4a27-aea2-3aac0419c889}*SharedItemsImports = 9 - dev\AnimatedIcon\AnimatedIcon.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\AnimatedVisualPlayer\AnimatedVisualPlayer.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Collections\Collections.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\CommonStyles\CommonStyles.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Common\Common.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\DropDownButton\DropDownButton.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Effects\Microsoft.UI.Private.Composition.Effects.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\IconSource\IconSource.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\ImageIcon\ImageIcon.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Lights\Lights.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Materials\Acrylic\AcrylicBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Materials\Reveal\RevealBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\MonochromaticOverlayPresenter\MonochromaticOverlayPresenter.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\ResourceHelper\ResourceHelper.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\SplitButton\SplitButton.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\Telemetry\Telemetry.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\TestHooks\TestHooks.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 - dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{ae308818-af18-48ba-bf33-89779083d297}*SharedItemsImports = 13 - dev\TreeView\InteractionTests\TreeView_InteractionTests.projitems*{ae638a24-2bc6-4d4f-a51e-715d198f01fd}*SharedItemsImports = 13 - dev\RatingControl\InteractionTests\RatingControl_InteractionTests.projitems*{afaad014-132c-4d2a-a28e-4ef717d3e647}*SharedItemsImports = 13 - dev\PersonPicture\InteractionTests\PersonPicture_InteractionTests.projitems*{b0c15318-1f57-4914-b860-ebf248841511}*SharedItemsImports = 13 - dev\PipsPager\InteractionTests\PipsPager_InteractionTests.projitems*{b1d8e6a2-3fe6-4d80-9685-26df2c9f4331}*SharedItemsImports = 13 - dev\TreeView\TestUI\TreeView_TestUI.projitems*{b2c714dd-9c6b-400c-9cef-13a2d48378bd}*SharedItemsImports = 13 - dev\AnimatedVisualPlayer\AnimatedVisualPlayer.vcxitems*{b39300d2-4510-44ea-aa7b-eda9118f830e}*SharedItemsImports = 9 - dev\ProgressRing\TestUI\ProgressRing_TestUI.projitems*{b58ec806-9951-4e5e-af29-a700a088770e}*SharedItemsImports = 13 - dev\SwipeControl\SwipeControl_APITests\SwipeControl_APITests.projitems*{b75d5d7e-6986-4500-972e-2c10a9b7cc10}*SharedItemsImports = 13 - dev\TabView\TabView.vcxitems*{b9f81fef-1e8d-4fe1-a46b-7002d4c109d2}*SharedItemsImports = 9 - dev\CommonStyles\APITests\CommonStyles_ApiTests.projitems*{ba914f48-e924-4fd2-aee1-264f67db6c9f}*SharedItemsImports = 13 - dev\Interactions\SliderInteraction\InteractionTests\SliderInteraction_InteractionTests.projitems*{bbbb0add-4e05-430c-9ffd-08a299fd1b06}*SharedItemsImports = 13 - dev\SwipeControl\SwipeControl_TestUI\SwipeControl_TestUI.projitems*{bc75c32b-f63a-4f2d-902c-8142db31a2e7}*SharedItemsImports = 13 - dev\ComboBox\TestUI\ComboBox_TestUI.projitems*{bcdf880a-41eb-4943-aae2-54a1a1159600}*SharedItemsImports = 13 - dev\PullToRefresh\RefreshVisualizer\TestUI\RefreshVisualizer_TestUI.projitems*{bf236ee7-b31d-4150-a777-2b91492a84e2}*SharedItemsImports = 13 - dev\ParallaxView\InteractionTests\ParallaxView_InteractionTests.projitems*{bfaad014-132c-4d2a-a28e-4ef717d3e648}*SharedItemsImports = 13 - dev\ScrollView\InteractionTests\ScrollView_InteractionTests.projitems*{bfaad015-232d-5d2b-b28f-5ef717d3e648}*SharedItemsImports = 13 - dev\ItemsView\InteractionTests\ItemsView_InteractionTests.projitems*{8f4cd019-252a-542b-1f85-ae3716dbe04b}*SharedItemsImports = 13 - dev\PullToRefresh\RefreshVisualizer\APITests\RefreshVisualizer_APITests.projitems*{c0d77e37-d2d0-4e37-b6a1-8e6eae28945d}*SharedItemsImports = 13 - dev\Breadcrumb\InteractionTests\Breadcrumb_InteractionTests.projitems*{c1477378-4a7a-43e5-8499-98a23544cc8a}*SharedItemsImports = 13 - dev\Interactions\ButtonInteraction\InteractionTests\ButtonInteraction_InteractionTests.projitems*{c332ceaf-68b6-4980-b6f3-b15e350cdce0}*SharedItemsImports = 13 - dev\TeachingTip\InteractionTests\TeachingTip_InteractionTests.projitems*{c4421632-51bc-469d-bc49-f1cbd9269d49}*SharedItemsImports = 13 - dev\PagerControl\APITests\PagerControl_APITests.projitems*{cb2352e2-d633-41a3-8cdc-b28731a4c490}*SharedItemsImports = 13 - dev\AnimatedVisualPlayer\InteractionTests\AnimatedVisualPlayer_InteractionTests.projitems*{cbaaccf6-a27d-40b3-980b-adf51a2ebb89}*SharedItemsImports = 13 - dev\InfoBar\InfoBar.vcxitems*{ccc102b7-f5ef-479d-94f1-008d189448b1}*SharedItemsImports = 9 - dev\LayoutPanel\APITests\LayoutPanel_APITests.projitems*{cddf46ef-aa2d-4bb3-b33e-98b3dbb3c41b}*SharedItemsImports = 13 - dev\MonochromaticOverlayPresenter\MonochromaticOverlayPresenter.vcxitems*{d03847c1-7ee7-4423-82fd-3cb31daf98d1}*SharedItemsImports = 9 - dev\Interactions\SliderInteraction\SliderInteraction.vcxitems*{d097a4d5-6b61-424d-99f0-f335eff41665}*SharedItemsImports = 9 - dev\TabView\InteractionTests\TabView_InteractionTests.projitems*{d1e297b4-5e5b-4807-8624-4141c817a98a}*SharedItemsImports = 13 - dev\PipsPager\PipsPager.vcxitems*{d1eb61d8-c689-4ad1-bd61-fdaa50362563}*SharedItemsImports = 9 - dev\Expander\InteractionTests\Expander_InteractionTests.projitems*{d6df4ab9-facc-4e51-8c57-6b1f96919365}*SharedItemsImports = 13 - dev\IconSource\APITests\IconSource_APITests.projitems*{d73627e9-564c-4a72-a12d-f6c82f17ad0d}*SharedItemsImports = 13 - dev\InfoBadge\APITests\InfoBadge_APITests.projitems*{d83f60a3-eb44-46f2-8ee7-b28c90004e5f}*SharedItemsImports = 13 - dev\DropDownButton\InteractionTests\DropDownButton_InteractionTests.projitems*{d9ac3716-5608-40d0-999f-26f4b544be33}*SharedItemsImports = 13 - dev\AnimatedVisualPlayer\TestUI\AnimatedVisualPlayer_TestUI.projitems*{dbec0be4-ba3f-41c9-a303-af98201be6dc}*SharedItemsImports = 13 - dev\PullToRefresh\RefreshContainer\TestUI\RefreshContainer_TestUI.projitems*{ddb468e4-7b64-4301-8fcb-1bebbb1e689f}*SharedItemsImports = 13 - dev\ImageIcon\TestUI\ImageIcon_TestUI.projitems*{dde1c022-6f9a-4067-89c2-81f2eeaf249f}*SharedItemsImports = 13 - dev\TreeView\APITests\TreeView_APITests.projitems*{de885c66-929c-464e-bac4-3e076ec46483}*SharedItemsImports = 13 - dev\AnimatedVisualPlayer\TestUI\AnimatedVisualPlayer_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 - dev\CommonManaged\CommonManaged.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 - test\TestAppUtils\TestAppUtils.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 - dev\SplitButton\InteractionTests\SplitButton_InteractionTests.projitems*{e1c861e2-c4d9-41e1-aed7-5e203451bd4d}*SharedItemsImports = 13 - dev\CommandBarFlyout\TestUI\CommandBarFlyout_TestUI.projitems*{e63f1c1d-f06d-46a0-b5c2-184184e44f29}*SharedItemsImports = 13 - dev\SplitButton\APITests\SplitButton_APITests.projitems*{e687c158-4c66-4ac5-8a1b-d095a82f1549}*SharedItemsImports = 13 - dev\RadioButtons\RadioButtons.vcxitems*{e770a6d3-7252-4e8a-bd10-fa8524df8c83}*SharedItemsImports = 9 - dev\InfoBadge\InfoBadge.vcxitems*{e7dea84c-ccce-4458-8499-5182f67bc7ba}*SharedItemsImports = 9 - dev\NavigationView\NavigationView_ApiTests\NavigationView_ApiTests.projitems*{e98f3da3-3c00-4f2e-bf3b-2d2ad9d176bc}*SharedItemsImports = 13 - dev\ColorPicker\APITests\ColorPicker_APITests.projitems*{e9ac4938-ec2a-46d3-85bf-27316db8cc4d}*SharedItemsImports = 13 - test\MUXControls.Test\MUXControls.Test.Shared.projitems*{e9fc52cd-519a-41bb-8092-523ffa9d5617}*SharedItemsImports = 13 - dev\Expander\Expander.vcxitems*{ec3b6f65-32c6-4bc8-8902-ee0b397e2787}*SharedItemsImports = 9 - dev\PullToRefresh\RefreshVisualizer\RefreshVisualizer.vcxitems*{ed7dba65-8f09-44f3-8d25-7bb5a7a89609}*SharedItemsImports = 9 - dev\TreeView\TreeView.vcxitems*{eeb38379-3a5c-439f-bb5e-535d75f2b6c1}*SharedItemsImports = 9 - dev\ImageIcon\InteractionTests\ImageIcon_InteractionTests.projitems*{f14fb632-e705-44bc-9415-75b539f483e1}*SharedItemsImports = 13 - dev\AnimatedIcon\AnimatedIcon.vcxitems*{f1c8a5a1-b1b0-4095-8849-e550fcf2ebf6}*SharedItemsImports = 9 - dev\PullToRefresh\RefreshContainer\InteractionTests\RefreshContainer_InteractionTests.projitems*{f30fe0d3-2e44-405e-8519-ec3ab098c41f}*SharedItemsImports = 13 - dev\InfoBar\InteractionTests\InfoBar_InteractionTests.projitems*{f470a64e-780e-45aa-abb7-73a8734e51d7}*SharedItemsImports = 13 - dev\InfoBadge\InteractionTests\InfoBadge_InteractionTests.projitems*{f55ab8bf-f828-4a2e-bcdf-68f22aed35c3}*SharedItemsImports = 13 - dev\Materials\Acrylic\InteractionTests\AcrylicBrush_InteractionTests.projitems*{f601284a-00c1-49f9-99b3-70d45585f784}*SharedItemsImports = 13 - dev\SplitButton\SplitButton.vcxitems*{faf114dd-af1f-4d9f-a511-354c19912aad}*SharedItemsImports = 9 - dev\AnimatedVisualPlayer\TestUI\AnimatedVisualPlayer_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - dev\CommonManaged\CommonManaged.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - dev\SplitButton\APITests\SplitButton_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - dev\SplitButton\TestUI\SplitButton_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - test\TestAppUtils\TestAppUtils.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - dev\LayoutPanel\LayoutPanel.vcxitems*{fd3c1a00-0d07-4849-a3b9-646f0ff21d7b}*SharedItemsImports = 9 - dev\SwipeControl\SwipeControl.vcxitems*{fd63f767-bd98-45d9-8a63-3cd4a148d527}*SharedItemsImports = 9 - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_test|ARM64 = Debug_test|ARM64 Debug_test|x64 = Debug_test|x64 @@ -943,7 +744,7 @@ Global {B0C15318-1F57-4914-B860-EBF248841511} = {813C1EA5-ADC1-4C14-B3DC-B873098D7AAA} {414D2AE4-5B65-43E1-9C11-D94817835B3D} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} {96707BBD-8D2A-4715-8DDA-3A60E4AF9914} = {414D2AE4-5B65-43E1-9C11-D94817835B3D} - {3AFFD0CE-C682-4E59-A9D4-BE8EC3F485DA} = {96707BBD-8D2A-4715-8DDA-3A60E4AF9914} + {76353825-06F5-4EA2-BB96-D6A9BB8B6545} = {96707BBD-8D2A-4715-8DDA-3A60E4AF9914} {CE762527-4CC8-4604-A0DD-9EA4CB29C4A9} = {414D2AE4-5B65-43E1-9C11-D94817835B3D} {4993A99D-57AE-4EE7-A3C1-0840ED127608} = {CE762527-4CC8-4604-A0DD-9EA4CB29C4A9} {73E823BC-5485-4F26-9B09-8B83C133EE6B} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} @@ -1135,8 +936,225 @@ Global {1F30CAC6-7EFB-4CE9-B119-64821C117CB9} = {FFCAAB60-C938-40C5-90E4-115584B22CDF} {F55AB8BF-F828-4A2E-BCDF-68F22AED35C3} = {FFCAAB60-C938-40C5-90E4-115584B22CDF} {222EF6F6-0845-49E7-81F2-9686CEF85C67} = {5A911304-2863-4A73-8023-26EFCB4E01DA} + {1CEADA92-1E59-4265-B3A3-0A0490F1360A} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} + {7C60C2AE-6ABC-4762-A0EF-1F50CDD0BA1E} = {1CEADA92-1E59-4265-B3A3-0A0490F1360A} + {F350D71A-A980-4D63-A38A-8A2035DC4EF2} = {1CEADA92-1E59-4265-B3A3-0A0490F1360A} + {8C2F2FA6-5639-4C01-84D0-06E037824689} = {1CEADA92-1E59-4265-B3A3-0A0490F1360A} + {189F0B87-4CA1-4F77-8195-FC6DC714157A} = {1CEADA92-1E59-4265-B3A3-0A0490F1360A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D93836AB-52D3-4DE2-AE25-23F26F55ECED} EndGlobalSection + GlobalSection(SharedMSBuildProjectFiles) = preSolution + dev\ComboBox\ComboBox.vcxitems*{00523caf-422a-4185-9392-d374b72a019a}*SharedItemsImports = 9 + dev\ParallaxView\TestUI\ParallaxView_TestUI.projitems*{00c52fd5-42fd-33b4-84a0-795c9b5a014d}*SharedItemsImports = 13 + dev\lights\ApiTests\Lights_ApiTests\Lights_ApiTests.projitems*{02ed27be-97e4-4327-bb96-8b3fa6869c48}*SharedItemsImports = 13 + dev\RadioButtons\APITests\RadioButtons_APITests.projitems*{0352711a-d79a-4d82-8255-916d29522ae0}*SharedItemsImports = 13 + dev\SampleControl\TestUI\SampleControl_TestUI.projitems*{05361409-7fbb-4296-996f-2e591857d84a}*SharedItemsImports = 13 + dev\Telemetry\Telemetry.vcxitems*{0db22ba9-6053-459b-baf5-e82ea1c78ab3}*SharedItemsImports = 9 + dev\ScrollPresenter\TestUI\ScrollPresenter_TestUI.projitems*{0ec52fd5-42fe-3eb4-84e0-79ec9b5a014e}*SharedItemsImports = 13 + dev\ProgressBar\ProgressBar.vcxitems*{0f61c8bd-d066-4812-a02b-e95ce18a985d}*SharedItemsImports = 9 + test\testinfra\MUXTestInfra\MUXTestInfra.Shared.projitems*{107794d7-4be0-407e-a76c-efa46d1e9f93}*SharedItemsImports = 13 + dev\RatingControl\TestUI\RatingControl_TestUI.projitems*{10c52fd4-52fc-43b3-94af-895c9b5a014c}*SharedItemsImports = 13 + dev\Interactions\ButtonInteraction\TestUI\ButtonInteraction_TestUI.projitems*{11b35f24-72b2-4228-9960-0d1ea283e1af}*SharedItemsImports = 13 + dev\CommandBarFlyout\CommandBarFlyout.vcxitems*{11c085ff-8f68-48ee-9949-6eecbd0cbe6c}*SharedItemsImports = 9 + dev\TwoPaneView\InteractionTests\TwoPaneView_InteractionTests.projitems*{1294409d-9bad-40cc-a74d-9ab29b343071}*SharedItemsImports = 13 + dev\NumberBox\TestUI\NumberBox_TestUI.projitems*{13da8235-d04f-46d4-b5b4-f5ae774eeede}*SharedItemsImports = 13 + dev\MenuBar\MenuBar_InteractionTests\MenuBar_InteractionTests.projitems*{1440a7b7-d3ca-4390-8c85-e1e9a7df8542}*SharedItemsImports = 13 + dev\Effects\Microsoft.UI.Private.Composition.Effects.vcxitems*{1522a856-17ce-4178-a6b3-0692f90d7c55}*SharedItemsImports = 9 + dev\CommandBarFlyout\InteractionTests\CommandBarFlyout_InteractionTests.projitems*{16f32f80-a8b6-44e0-9d99-0e1c2c8e0579}*SharedItemsImports = 13 + dev\MapControl\InteractionTests\MapControl_InteractionTests.projitems*{189f0b87-4ca1-4f77-8195-fc6dc714157a}*SharedItemsImports = 13 + dev\TeachingTip\APITests\TeachingTip_APITests.projitems*{18f1db69-7457-461c-9d19-7f42bffc0803}*SharedItemsImports = 13 + dev\IconSource\IconSource.vcxitems*{19ffff77-4814-4ad6-acd7-42c6a50ab0d8}*SharedItemsImports = 9 + dev\ProgressBar\TestUI\ProgressBar_TestUI.projitems*{1a5321f3-b837-4eb6-9547-37cc70088ea9}*SharedItemsImports = 13 + dev\NavigationView\NavigationView.vcxitems*{1b8ef049-a38e-43e4-b88e-f1ebfcef07d2}*SharedItemsImports = 9 + dev\TabView\TestUI\TabView_TestUI.projitems*{1d87aac7-1e11-40fc-90a7-b6ce1c4567ae}*SharedItemsImports = 13 + dev\Materials\Reveal\InteractionTests\Reveal_InteractionTests\Reveal_InteractionTests.projitems*{1f2872e7-28c9-4c01-88ed-73c43ee1c9a4}*SharedItemsImports = 13 + dev\InfoBadge\TestUI\InfoBadge_TestUI.projitems*{1f30cac6-7efb-4ce9-b119-64821c117cb9}*SharedItemsImports = 13 + dev\ScrollView\TestUI\ScrollView_TestUI.projitems*{20c52fd5-62fd-53b4-a4a0-995c9b5a014d}*SharedItemsImports = 13 + dev\ProgressRing\APITests\ProgressRing_APITests.projitems*{222ef6f6-0845-49e7-81f2-9686cef85c67}*SharedItemsImports = 13 + dev\PagerControl\TestUI\PagerControl_TestUI.projitems*{225c4174-3141-49b8-ade2-c7d3408d5103}*SharedItemsImports = 13 + dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\ScrollViewerIRefreshInfoProviderAdapter.vcxitems*{22a3d1c4-4d1c-4b04-b695-8fec39bfed86}*SharedItemsImports = 9 + dev\Interactions\ButtonInteraction\ButtonInteraction.vcxitems*{2459bc06-2ae5-4c65-ba73-ab28090b6fab}*SharedItemsImports = 9 + dev\ColorPicker\ColorPicker.vcxitems*{248cc96d-67a2-4359-a4e3-ab0dad110a1e}*SharedItemsImports = 9 + dev\RatingControl\APITests\RatingControl_APITests.projitems*{274b93f7-cd18-4ed9-b569-0640529d187b}*SharedItemsImports = 13 + dev\ImageIcon\APITests\ImageIcon_APITests.projitems*{27aae2e5-9687-4120-822f-cdb68b9a65b7}*SharedItemsImports = 13 + dev\SplitButton\TestUI\SplitButton_TestUI.projitems*{280c91f4-96b5-4bde-9e02-e573e1def583}*SharedItemsImports = 13 + dev\ItemsView\APITests\ItemsView_APITests.projitems*{283c02a7-ce19-5fd9-c66b-2640029d9876}*SharedItemsImports = 13 + dev\Repeater\TestUI\Repeater_TestUI.projitems*{2ed883f5-20db-4445-8c96-517a21e5e657}*SharedItemsImports = 13 + dev\TabView\APITests\TabView_APITests.projitems*{2f4e95e9-f729-481c-b9aa-c9bec91ae395}*SharedItemsImports = 13 + dev\SampleControl\InteractionTests\SampleControl_InteractionTests.projitems*{30120040-3eb8-404d-9344-5e99e34b6090}*SharedItemsImports = 13 + dev\ParallaxView\ParallaxView.vcxitems*{3095445a-afcd-5154-ac36-9770e6ec1aa5}*SharedItemsImports = 9 + dev\ItemsView\TestUI\ItemsView_TestUI.projitems*{30c62ff5-72fe-52b6-a2a1-a95b9b8a0241}*SharedItemsImports = 13 + dev\InfoBar\TestUI\InfoBar_TestUI.projitems*{32dfaf1e-c2ec-4c52-a4d8-b3a3946242b4}*SharedItemsImports = 13 + dev\RadioMenuFlyoutItem\RadioMenuFlyoutItem.vcxitems*{3353a4a7-87b3-4e43-8f8d-43c7380d1d56}*SharedItemsImports = 9 + dev\Lights\Lights.vcxitems*{3479a3ae-2854-4bec-80ab-eab0772cb90a}*SharedItemsImports = 9 + dev\ScrollPresenter\ScrollPresenter.vcxitems*{359544aa-a8cd-715c-cc36-f770e6e81aa0}*SharedItemsImports = 9 + dev\ParallaxView\APITests\ParallaxView_APITests.projitems*{374b93f7-cd18-4ed9-b569-0640529d187c}*SharedItemsImports = 13 + dev\ScrollView\APITests\ScrollView_APITests.projitems*{374b93f8-dd19-5eda-c56a-1640529d187c}*SharedItemsImports = 13 + dev\Collections\Collections.vcxitems*{395a71a1-4327-477b-85d4-af0851732ccb}*SharedItemsImports = 9 + dev\CommonStyles\CommonStyles.vcxitems*{3a07fa59-c5c1-4b46-8b31-043f9ca91226}*SharedItemsImports = 9 + dev\ProgressBar\InteractionTests\ProgressBar_InteractionTests.projitems*{3d044ec1-c9d3-4745-b79e-e7bed66e93f8}*SharedItemsImports = 13 + dev\AutoSuggestBox\AutoSuggestBox.vcxitems*{417000d9-2641-4629-99f2-8f6033a6ac52}*SharedItemsImports = 9 + dev\TeachingTip\TestUI\TeachingTip_TestUI.projitems*{42a51d3e-f06a-41a0-be4c-f94cddb80678}*SharedItemsImports = 13 + dev\RadioButtons\InteractionTests\RadioButtons_InteractionTests.projitems*{42d6e8f9-59fe-4ca5-83eb-69a7622f5742}*SharedItemsImports = 13 + dev\TwoPaneView\APITests\TwoPaneView_APITests.projitems*{44deafbc-bb7a-4b02-aeab-29df2c2f8587}*SharedItemsImports = 13 + dev\PipsPager\TestUI\PipsPager_TestUI.projitems*{44f0e6bc-6222-4f16-8050-bb31dd804c4a}*SharedItemsImports = 13 + dev\ResourceHelper\ResourceHelper.vcxitems*{45d41acc-2c3c-43d2-bc10-02aa73ffc7c7}*SharedItemsImports = 9 + dev\ScrollPresenter\APITests\ScrollPresenter_APITests.projitems*{474b92f7-cd58-fed9-8569-9640529d1871}*SharedItemsImports = 13 + dev\NavigationView\NavigationView_InteractionTests\NavigationView_InteractionTests.projitems*{475c3a33-637a-44dc-b789-6c2d78a75283}*SharedItemsImports = 13 + dev\AutoSuggestBox\TestUI\AutoSuggestBox_TestUI.projitems*{48bf2dab-82b5-4705-a880-f5310fb697f9}*SharedItemsImports = 13 + dev\Breadcrumb\APITests\Breadcrumb_APITests.projitems*{48df0143-c6a7-4184-bcc4-e59eac5d49f1}*SharedItemsImports = 13 + dev\Interactions\SliderInteraction\APITests\SliderInteraction_APITests.projitems*{48f7b68b-8050-4523-8374-963aa3b2834f}*SharedItemsImports = 13 + dev\Materials\Reveal\RevealBrush.vcxitems*{4993a99d-57ae-4ee7-a3c1-0840ed127608}*SharedItemsImports = 9 + dev\TeachingTip\TeachingTip.vcxitems*{499b8bf7-bca1-4c23-baa7-59e2c551be4b}*SharedItemsImports = 9 + dev\ColorPicker\TestUI\ColorPicker_TestUI.projitems*{4a87b4f1-4b6f-435a-950e-b2bb32a16001}*SharedItemsImports = 13 + dev\PagerControl\InteractionTests\PagerControl_InteractionTests.projitems*{4f64c819-664f-436a-bcdb-8ab3019b9dd5}*SharedItemsImports = 13 + dev\Materials\Reveal\APITests\Reveal_APITests.projitems*{5049ea6c-88ce-4ed5-8692-947eec9e52bc}*SharedItemsImports = 13 + dev\Expander\TestUI\Expander_TestUI.projitems*{50c1f1d3-20aa-49a8-9e4c-cf4e5811a1d8}*SharedItemsImports = 13 + dev\RadioMenuFlyoutItem\TestUI\RadioMenuFlyoutItem_TestUI.projitems*{50e838a2-a886-46c9-ab0b-a57f510ce643}*SharedItemsImports = 13 + dev\PersonPicture\APITests\PersonPicture_APITests.projitems*{5243ef2c-f250-48bd-b633-39cc2a0a38aa}*SharedItemsImports = 13 + dev\MonochromaticOverlayPresenter\TestUI\MonochromaticOverlayPresenter_TestUI.projitems*{52aaa6ed-e5a0-41bb-8858-66249333a8d4}*SharedItemsImports = 13 + dev\PullToRefresh\TestUI\PTR_TestUI.projitems*{549c8eb7-e099-4eab-a1f6-faa3fa79b9e0}*SharedItemsImports = 13 + dev\MenuBar\MenuBar_TestUI\MenuBar_TestUI.projitems*{55cb08ca-19fe-4db9-8160-a4ec47984b95}*SharedItemsImports = 13 + dev\Breadcrumb\Breadcrumb.vcxitems*{563fe343-c6b0-447b-831a-b0ce3aa7a688}*SharedItemsImports = 9 + dev\Materials\Acrylic\APITests\AcrylicBrush_ApiTests.projitems*{593e15d8-f6f9-4aba-ba65-c6927c178dbd}*SharedItemsImports = 13 + dev\Materials\Reveal\TestUI\Reveal_TestUI.projitems*{5bf80ae9-29df-4be9-858a-f095c8073473}*SharedItemsImports = 13 + dev\PersonPicture\PersonPicture.vcxitems*{5fdf2501-aa3d-4082-ad45-d1f2a94c1213}*SharedItemsImports = 9 + dev\ProgressRing\ProgressRing.vcxitems*{64447efa-19b4-4bf2-9d63-618635c483ec}*SharedItemsImports = 9 + dev\SampleControl\APITests\SampleControl_APITests.projitems*{65521a02-7166-48be-b524-8f8f0ecc3a76}*SharedItemsImports = 13 + dev\RatingControl\RatingControl.vcxitems*{655f5da8-f87b-45af-88d1-a884881c3edf}*SharedItemsImports = 9 + dev\Breadcrumb\TestUI\Breadcrumb_TestUI.projitems*{657121b7-3e4f-4c76-abe2-0221a7997929}*SharedItemsImports = 13 + test\MUXControlsTestApp\MUXControlsTestApp.Shared.projitems*{6aa772a6-cbf7-4ff3-8864-bc9366015dc2}*SharedItemsImports = 13 + dev\Materials\MicaBackdrop\MicaBackdrop.vcxitems*{71abd2f5-1ae8-45e9-814c-f8362fe1ad33}*SharedItemsImports = 9 + dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.projitems*{74d18b1b-5f6b-4534-945b-131e8e3206fb}*SharedItemsImports = 13 + dev\ScrollView\ScrollView.vcxitems*{755f5da9-087c-55a0-98d2-b884881c3ed0}*SharedItemsImports = 9 + dev\Materials\Acrylic\AcrylicBrush.vcxitems*{76353825-06f5-4ea2-bb96-d6a9bb8b6545}*SharedItemsImports = 9 + dev\NumberBox\InteractionTests\NumberBox_InteractionTests.projitems*{773f7592-e7b3-42fc-a14a-e815afd6a0cb}*SharedItemsImports = 13 + dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\InteractionTests\ScrollViewerAdapter_InteractionTests.projitems*{79863454-1dbf-45bb-b3d3-420b8f5e8705}*SharedItemsImports = 13 + dev\ItemsView\ItemsView.vcxitems*{7b5f5ca3-084c-58a0-97da-b8c488cc3e30}*SharedItemsImports = 9 + dev\MapControl\MapControl.vcxitems*{7c60c2ae-6abc-4762-a0ef-1f50cdd0ba1e}*SharedItemsImports = 9 + dev\NavigationView\TestUI\NavigationView_TestUI.projitems*{7ee5e585-090a-44bf-a950-80636e242327}*SharedItemsImports = 13 + dev\Common\Common.vcxitems*{80ad7f51-8997-47b9-bb41-078b81cff9b0}*SharedItemsImports = 9 + dev\NumberBox\APITests\NumberBox_APITests.projitems*{80af98ca-bc1d-4011-8460-5671799ec419}*SharedItemsImports = 13 + dev\Interactions\SliderInteraction\TestUI\SliderInteraction_TestUI.projitems*{80f1f883-d49b-407d-9e77-c9b0e62b61a9}*SharedItemsImports = 13 + dev\RadioButtons\TestUI\RadioButtons_TestUI.projitems*{833a6892-a079-469a-81c7-54d4cd88029b}*SharedItemsImports = 13 + dev\AnimatedIcon\TestUI\AnimatedIcon_TestUI.projitems*{83fd36c0-189f-4e95-8002-9b73905ca301}*SharedItemsImports = 13 + dev\TestHooks\TestHooks.vcxitems*{848448d5-f717-4f88-8f99-311cd60587fa}*SharedItemsImports = 9 + dev\CommonManaged\CommonManaged.projitems*{85a134e5-c83f-44a4-80df-59f6ebf6c60d}*SharedItemsImports = 13 + dev\DropDownButton\DropDownButton.vcxitems*{8613ed91-ade3-4c5c-a09a-041187841eb3}*SharedItemsImports = 9 + dev\PullToRefresh\PTRTracing\PTRTracing.vcxitems*{890a5548-0515-4099-b526-0539fe9a0376}*SharedItemsImports = 9 + dev\RadioMenuFlyoutItem\InteractionTests\RadioMenuFlyoutItem_InteractionTests.projitems*{89ec8d06-ca59-49a9-aefe-32dcc9dd8020}*SharedItemsImports = 13 + dev\PersonPicture\TestUI\PersonPicture_TestUI.projitems*{8a1690fb-aa8c-461a-840c-89cdbb44bdba}*SharedItemsImports = 13 + dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{8b056b8f-c1ab-4a80-bd17-deace9897e6a}*SharedItemsImports = 9 + dev\MenuBar\MenuBar.vcxitems*{8bc9ceb8-8b4a-11d0-8d11-00a0c91bc942}*SharedItemsImports = 9 + dev\ProgressRing\InteractionTests\ProgressRing_InteractionTests.projitems*{8c2d60af-44bc-47da-8e44-d62e639bfc0a}*SharedItemsImports = 13 + dev\MapControl\TestUI\MapControl_TestUI.projitems*{8c2f2fa6-5639-4c01-84d0-06e037824689}*SharedItemsImports = 13 + dev\TwoPaneView\TwoPaneView.vcxitems*{8d0e4610-b51d-45c1-8b82-240bd2f73a92}*SharedItemsImports = 9 + dev\Repeater\APITests\Repeater_APITests.projitems*{8d2da979-6313-49e2-8cf3-b568436d2944}*SharedItemsImports = 13 + dev\Interactions\ButtonInteraction\APITests\ButtonInteraction_APITests.projitems*{8dc0ea14-d850-4c6e-8918-beeb89e877bd}*SharedItemsImports = 13 + dev\ItemsView\InteractionTests\ItemsView_InteractionTests.projitems*{8f4cd019-252a-542b-1f85-ae3716dbe04b}*SharedItemsImports = 13 + dev\CommandBarFlyout\APITests\CommandBarFlyout_APITests.projitems*{8f6f9336-c45c-40c1-abda-3679a20434b1}*SharedItemsImports = 13 + dev\ScrollPresenter\InteractionTests\ScrollPresenter_InteractionTests.projitems*{8faad013-139c-8d2a-2285-45f717d9e64a}*SharedItemsImports = 13 + dev\PullToRefresh\RefreshContainer\RefreshContainer.vcxitems*{94aaadf1-80ca-45a7-9bd8-c6d00d58334d}*SharedItemsImports = 9 + dev\DropDownButton\TestUI\DropDownButton_TestUI.projitems*{954d7000-c06f-49eb-a7d2-0df83de6ca35}*SharedItemsImports = 13 + dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\APITests\APITests.projitems*{999c289e-5ad6-4700-a44e-e85b696e508a}*SharedItemsImports = 13 + dev\Repeater\InteractionTests\Repeater_InteractionTests.projitems*{999e00c9-0e58-402a-8e0e-cbafb0adc7e3}*SharedItemsImports = 13 + dev\SwipeControl\SwipeControl_InteractionTests\SwipeControl_InteractionTests.projitems*{9a8da438-193c-4950-a046-2952de2d3b0b}*SharedItemsImports = 13 + dev\TwoPaneView\TestUI\TwoPaneView_TestUI.projitems*{9c533ec3-f8fa-4b0e-ba1b-3323932cdfcb}*SharedItemsImports = 13 + dev\PipsPager\APITests\PipsPager_APITests.projitems*{9cf0d73a-e435-4c17-a41c-11e9fa3eea2f}*SharedItemsImports = 13 + dev\NumberBox\NumberBox.vcxitems*{9d23c997-1f46-444a-8c07-4a4bff7e4e63}*SharedItemsImports = 9 + dev\ImageIcon\ImageIcon.vcxitems*{9fb38577-696e-47ba-8ae2-f48a3c84a7ca}*SharedItemsImports = 9 + dev\Repeater\Repeater.vcxitems*{a0aa8919-2140-42db-beb1-b2c3ace594f4}*SharedItemsImports = 9 + dev\CommonStyles\InteractionTests\CommonStyles_InteractionTests.projitems*{a25ae312-7c11-4e30-ae35-2e31c744a250}*SharedItemsImports = 13 + dev\SampleControl\SampleControl.vcxitems*{a329fb8a-3093-4050-83d3-4d9f5847f3b8}*SharedItemsImports = 9 + dev\ColorPicker\InteractionTests\ColorPicker_InteractionTests.projitems*{a4d2fae8-e7fc-4100-91ff-2202fac91c70}*SharedItemsImports = 13 + dev\CommonStyles\TestUI\CommonStyles_TestUI.projitems*{a7f6d6c4-a5a9-43eb-930c-b766417a5e5c}*SharedItemsImports = 13 + dev\Materials\Acrylic\TestUI\AcrylicBrush_TestUI.projitems*{a800e818-7212-4fd7-ae3a-1dcab539db87}*SharedItemsImports = 13 + dev\PagerControl\PagerControl.vcxitems*{ab3261a7-9a8d-4a27-aea2-3aac0419c889}*SharedItemsImports = 9 + dev\AnimatedIcon\AnimatedIcon.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\AnimatedVisualPlayer\AnimatedVisualPlayer.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Collections\Collections.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\CommonStyles\CommonStyles.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Common\Common.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\DropDownButton\DropDownButton.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Effects\Microsoft.UI.Private.Composition.Effects.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\IconSource\IconSource.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\ImageIcon\ImageIcon.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Lights\Lights.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Materials\Acrylic\AcrylicBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Materials\Reveal\RevealBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\MonochromaticOverlayPresenter\MonochromaticOverlayPresenter.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\ResourceHelper\ResourceHelper.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\SplitButton\SplitButton.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\Telemetry\Telemetry.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\TestHooks\TestHooks.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{ae308818-af18-48ba-bf33-89779083d297}*SharedItemsImports = 13 + dev\TreeView\InteractionTests\TreeView_InteractionTests.projitems*{ae638a24-2bc6-4d4f-a51e-715d198f01fd}*SharedItemsImports = 13 + dev\RatingControl\InteractionTests\RatingControl_InteractionTests.projitems*{afaad014-132c-4d2a-a28e-4ef717d3e647}*SharedItemsImports = 13 + dev\PersonPicture\InteractionTests\PersonPicture_InteractionTests.projitems*{b0c15318-1f57-4914-b860-ebf248841511}*SharedItemsImports = 13 + dev\PipsPager\InteractionTests\PipsPager_InteractionTests.projitems*{b1d8e6a2-3fe6-4d80-9685-26df2c9f4331}*SharedItemsImports = 13 + dev\TreeView\TestUI\TreeView_TestUI.projitems*{b2c714dd-9c6b-400c-9cef-13a2d48378bd}*SharedItemsImports = 13 + dev\AnimatedVisualPlayer\AnimatedVisualPlayer.vcxitems*{b39300d2-4510-44ea-aa7b-eda9118f830e}*SharedItemsImports = 9 + dev\ProgressRing\TestUI\ProgressRing_TestUI.projitems*{b58ec806-9951-4e5e-af29-a700a088770e}*SharedItemsImports = 13 + dev\SwipeControl\SwipeControl_APITests\SwipeControl_APITests.projitems*{b75d5d7e-6986-4500-972e-2c10a9b7cc10}*SharedItemsImports = 13 + dev\TabView\TabView.vcxitems*{b9f81fef-1e8d-4fe1-a46b-7002d4c109d2}*SharedItemsImports = 9 + dev\CommonStyles\APITests\CommonStyles_ApiTests.projitems*{ba914f48-e924-4fd2-aee1-264f67db6c9f}*SharedItemsImports = 13 + dev\Interactions\SliderInteraction\InteractionTests\SliderInteraction_InteractionTests.projitems*{bbbb0add-4e05-430c-9ffd-08a299fd1b06}*SharedItemsImports = 13 + dev\SwipeControl\SwipeControl_TestUI\SwipeControl_TestUI.projitems*{bc75c32b-f63a-4f2d-902c-8142db31a2e7}*SharedItemsImports = 13 + dev\ComboBox\TestUI\ComboBox_TestUI.projitems*{bcdf880a-41eb-4943-aae2-54a1a1159600}*SharedItemsImports = 13 + dev\PullToRefresh\RefreshVisualizer\TestUI\RefreshVisualizer_TestUI.projitems*{bf236ee7-b31d-4150-a777-2b91492a84e2}*SharedItemsImports = 13 + dev\ParallaxView\InteractionTests\ParallaxView_InteractionTests.projitems*{bfaad014-132c-4d2a-a28e-4ef717d3e648}*SharedItemsImports = 13 + dev\ScrollView\InteractionTests\ScrollView_InteractionTests.projitems*{bfaad015-232d-5d2b-b28f-5ef717d3e648}*SharedItemsImports = 13 + dev\PullToRefresh\RefreshVisualizer\APITests\RefreshVisualizer_APITests.projitems*{c0d77e37-d2d0-4e37-b6a1-8e6eae28945d}*SharedItemsImports = 13 + dev\Breadcrumb\InteractionTests\Breadcrumb_InteractionTests.projitems*{c1477378-4a7a-43e5-8499-98a23544cc8a}*SharedItemsImports = 13 + dev\Interactions\ButtonInteraction\InteractionTests\ButtonInteraction_InteractionTests.projitems*{c332ceaf-68b6-4980-b6f3-b15e350cdce0}*SharedItemsImports = 13 + dev\TeachingTip\InteractionTests\TeachingTip_InteractionTests.projitems*{c4421632-51bc-469d-bc49-f1cbd9269d49}*SharedItemsImports = 13 + dev\PagerControl\APITests\PagerControl_APITests.projitems*{cb2352e2-d633-41a3-8cdc-b28731a4c490}*SharedItemsImports = 13 + dev\AnimatedVisualPlayer\InteractionTests\AnimatedVisualPlayer_InteractionTests.projitems*{cbaaccf6-a27d-40b3-980b-adf51a2ebb89}*SharedItemsImports = 13 + dev\Materials\DesktopAcrylicBackdrop\DesktopAcrylicBackdrop.vcxitems*{cc231572-d8db-4d9d-a687-1690f9e8b169}*SharedItemsImports = 9 + dev\InfoBar\InfoBar.vcxitems*{ccc102b7-f5ef-479d-94f1-008d189448b1}*SharedItemsImports = 9 + dev\LayoutPanel\APITests\LayoutPanel_APITests.projitems*{cddf46ef-aa2d-4bb3-b33e-98b3dbb3c41b}*SharedItemsImports = 13 + dev\MonochromaticOverlayPresenter\MonochromaticOverlayPresenter.vcxitems*{d03847c1-7ee7-4423-82fd-3cb31daf98d1}*SharedItemsImports = 9 + dev\Interactions\SliderInteraction\SliderInteraction.vcxitems*{d097a4d5-6b61-424d-99f0-f335eff41665}*SharedItemsImports = 9 + dev\TabView\InteractionTests\TabView_InteractionTests.projitems*{d1e297b4-5e5b-4807-8624-4141c817a98a}*SharedItemsImports = 13 + dev\PipsPager\PipsPager.vcxitems*{d1eb61d8-c689-4ad1-bd61-fdaa50362563}*SharedItemsImports = 9 + dev\Expander\InteractionTests\Expander_InteractionTests.projitems*{d6df4ab9-facc-4e51-8c57-6b1f96919365}*SharedItemsImports = 13 + dev\IconSource\APITests\IconSource_APITests.projitems*{d73627e9-564c-4a72-a12d-f6c82f17ad0d}*SharedItemsImports = 13 + dev\InfoBadge\APITests\InfoBadge_APITests.projitems*{d83f60a3-eb44-46f2-8ee7-b28c90004e5f}*SharedItemsImports = 13 + dev\DropDownButton\InteractionTests\DropDownButton_InteractionTests.projitems*{d9ac3716-5608-40d0-999f-26f4b544be33}*SharedItemsImports = 13 + dev\AnimatedVisualPlayer\TestUI\AnimatedVisualPlayer_TestUI.projitems*{dbec0be4-ba3f-41c9-a303-af98201be6dc}*SharedItemsImports = 13 + dev\PullToRefresh\RefreshContainer\TestUI\RefreshContainer_TestUI.projitems*{ddb468e4-7b64-4301-8fcb-1bebbb1e689f}*SharedItemsImports = 13 + dev\ImageIcon\TestUI\ImageIcon_TestUI.projitems*{dde1c022-6f9a-4067-89c2-81f2eeaf249f}*SharedItemsImports = 13 + dev\TreeView\APITests\TreeView_APITests.projitems*{de885c66-929c-464e-bac4-3e076ec46483}*SharedItemsImports = 13 + dev\AnimatedVisualPlayer\TestUI\AnimatedVisualPlayer_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 + dev\CommonManaged\CommonManaged.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 + test\TestAppUtils\TestAppUtils.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 + dev\SplitButton\InteractionTests\SplitButton_InteractionTests.projitems*{e1c861e2-c4d9-41e1-aed7-5e203451bd4d}*SharedItemsImports = 13 + dev\CommandBarFlyout\TestUI\CommandBarFlyout_TestUI.projitems*{e63f1c1d-f06d-46a0-b5c2-184184e44f29}*SharedItemsImports = 13 + dev\SplitButton\APITests\SplitButton_APITests.projitems*{e687c158-4c66-4ac5-8a1b-d095a82f1549}*SharedItemsImports = 13 + dev\RadioButtons\RadioButtons.vcxitems*{e770a6d3-7252-4e8a-bd10-fa8524df8c83}*SharedItemsImports = 9 + dev\InfoBadge\InfoBadge.vcxitems*{e7dea84c-ccce-4458-8499-5182f67bc7ba}*SharedItemsImports = 9 + dev\NavigationView\NavigationView_ApiTests\NavigationView_ApiTests.projitems*{e98f3da3-3c00-4f2e-bf3b-2d2ad9d176bc}*SharedItemsImports = 13 + dev\ColorPicker\APITests\ColorPicker_APITests.projitems*{e9ac4938-ec2a-46d3-85bf-27316db8cc4d}*SharedItemsImports = 13 + test\MUXControls.Test\MUXControls.Test.Shared.projitems*{e9fc52cd-519a-41bb-8092-523ffa9d5617}*SharedItemsImports = 13 + dev\Expander\Expander.vcxitems*{ec3b6f65-32c6-4bc8-8902-ee0b397e2787}*SharedItemsImports = 9 + dev\PullToRefresh\RefreshVisualizer\RefreshVisualizer.vcxitems*{ed7dba65-8f09-44f3-8d25-7bb5a7a89609}*SharedItemsImports = 9 + dev\TreeView\TreeView.vcxitems*{eeb38379-3a5c-439f-bb5e-535d75f2b6c1}*SharedItemsImports = 9 + dev\ImageIcon\InteractionTests\ImageIcon_InteractionTests.projitems*{f14fb632-e705-44bc-9415-75b539f483e1}*SharedItemsImports = 13 + dev\AnimatedIcon\AnimatedIcon.vcxitems*{f1c8a5a1-b1b0-4095-8849-e550fcf2ebf6}*SharedItemsImports = 9 + dev\PullToRefresh\RefreshContainer\InteractionTests\RefreshContainer_InteractionTests.projitems*{f30fe0d3-2e44-405e-8519-ec3ab098c41f}*SharedItemsImports = 13 + dev\MapControl\APITests\MapControl_APITests.projitems*{f350d71a-a980-4d63-a38a-8a2035dc4ef2}*SharedItemsImports = 13 + dev\InfoBar\InteractionTests\InfoBar_InteractionTests.projitems*{f470a64e-780e-45aa-abb7-73a8734e51d7}*SharedItemsImports = 13 + dev\InfoBadge\InteractionTests\InfoBadge_InteractionTests.projitems*{f55ab8bf-f828-4a2e-bcdf-68f22aed35c3}*SharedItemsImports = 13 + dev\Materials\Acrylic\InteractionTests\AcrylicBrush_InteractionTests.projitems*{f601284a-00c1-49f9-99b3-70d45585f784}*SharedItemsImports = 13 + dev\SplitButton\SplitButton.vcxitems*{faf114dd-af1f-4d9f-a511-354c19912aad}*SharedItemsImports = 9 + dev\AnimatedVisualPlayer\TestUI\AnimatedVisualPlayer_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + dev\CommonManaged\CommonManaged.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + dev\SplitButton\APITests\SplitButton_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + dev\SplitButton\TestUI\SplitButton_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + test\TestAppUtils\TestAppUtils.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + dev\LayoutPanel\LayoutPanel.vcxitems*{fd3c1a00-0d07-4849-a3b9-646f0ff21d7b}*SharedItemsImports = 9 + dev\SwipeControl\SwipeControl.vcxitems*{fd63f767-bd98-45d9-8a63-3cd4a148d527}*SharedItemsImports = 9 + EndGlobalSection EndGlobal diff --git a/controls/ProjectImports.targets b/controls/ProjectImports.targets index 41f16fa53d..03211020f2 100644 --- a/controls/ProjectImports.targets +++ b/controls/ProjectImports.targets @@ -1,4 +1,4 @@ - + @@ -62,5 +62,7 @@ + + - + \ No newline at end of file diff --git a/controls/SdkVersion.props b/controls/SdkVersion.props index b99ffa4e0c..8e675310bf 100644 --- a/controls/SdkVersion.props +++ b/controls/SdkVersion.props @@ -8,11 +8,12 @@ 10.0.17763.0 10.0.18362.0 10.0.22000.0 - 10.0.22000.0 + 10.0.22621.0 + 10.0.22621.0 - - $(SDKVersion21H1) + + $(SDKVersion22H2) - - - + + + - + - + - + @@ -260,4 +338,4 @@ - \ No newline at end of file + diff --git a/controls/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs b/controls/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs index 1f89fabba7..205a42ee30 100644 --- a/controls/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs +++ b/controls/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs @@ -1110,7 +1110,7 @@ public void VerifyAddPrimaryCommandsDynamically() Wait.ForIdle(); Log.Comment("Invoke FlyoutTarget 6 to Show CommandBarFlyout with no primary commands"); - showCommandBarFlyoutButton.Click(); + showCommandBarFlyoutButton.InvokeAndWait(); Log.Comment("Waiting for SecondaryCommandDynamicLabelChangedCheckBox becoming checked indicating the asynchronous Label property change occurred"); primaryCommandDynamicallyAddedCheckBox.GetToggledWaiter().Wait(); diff --git a/controls/dev/CommandBarFlyout/TestUI/CommandBarFlyoutPage.xaml b/controls/dev/CommandBarFlyout/TestUI/CommandBarFlyoutPage.xaml index 4a5f9d07cb..fafbfe5315 100644 --- a/controls/dev/CommandBarFlyout/TestUI/CommandBarFlyoutPage.xaml +++ b/controls/dev/CommandBarFlyout/TestUI/CommandBarFlyoutPage.xaml @@ -230,6 +230,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -247,6 +295,10 @@ @@ -832,7 +851,11 @@ - + @@ -882,7 +905,13 @@ - + @@ -900,7 +929,13 @@ - + @@ -974,10 +1009,22 @@ - + - \ No newline at end of file + diff --git a/controls/dev/CommonStyles/InteractionTests/CommonStylesTests.cs b/controls/dev/CommonStyles/InteractionTests/CommonStylesTests.cs index c8feecadce..f1939a50cb 100644 --- a/controls/dev/CommonStyles/InteractionTests/CommonStylesTests.cs +++ b/controls/dev/CommonStyles/InteractionTests/CommonStylesTests.cs @@ -214,7 +214,7 @@ public void MenuFlyoutItemSizeTest() [TestMethod] public void TopBottomAppBarTest() { - using (var setup = new TestSetupHelper("CommandBar Tests")) + using (var setup = new TestSetupHelper(new[] { "CommandBar Tests", "navigateToCommandBar" })) { var topAppBar = FindElement.ByName("TopCmdBar"); Verify.IsNotNull(topAppBar); diff --git a/controls/dev/CommonStyles/MenuFlyout_themeresources.xaml b/controls/dev/CommonStyles/MenuFlyout_themeresources.xaml index 8737657629..e73566a250 100644 --- a/controls/dev/CommonStyles/MenuFlyout_themeresources.xaml +++ b/controls/dev/CommonStyles/MenuFlyout_themeresources.xaml @@ -274,7 +274,7 @@ - + diff --git a/controls/dev/CommonStyles/TestUI/AppBarPage.xaml b/controls/dev/CommonStyles/TestUI/AppBarPage.xaml new file mode 100644 index 0000000000..7caf32d050 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/AppBarPage.xaml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + Collapsed + + + + + Compact + Minimal + Hidden + + + + + False + True + + + + diff --git a/controls/dev/CommonStyles/TestUI/AppBarPage.xaml.cs b/controls/dev/CommonStyles/TestUI/AppBarPage.xaml.cs new file mode 100644 index 0000000000..549c917021 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/AppBarPage.xaml.cs @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Common; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using MUXControlsTestApp.Utilities; + +namespace MUXControlsTestApp +{ + [TopLevelTestPage(Name="AppBar")] + public sealed partial class AppBarPage : TestPage + { + public AppBarPage() + { + this.InitializeComponent(); + } + + private void CmbLabelPosition_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbLabelPosition == null) return; + + CommandBarLabelPosition labelPosition = (CommandBarLabelPosition)cmbLabelPosition.SelectedIndex; + + abbA1.LabelPosition = + abbA2.LabelPosition = + abbA3.LabelPosition = + abbB1.LabelPosition = + abbB2.LabelPosition = + abbB3.LabelPosition = labelPosition; + } + + private void CmbClosedDisplayMode_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbClosedDisplayMode == null) return; + + AppBarClosedDisplayMode closedDisplayMode = (AppBarClosedDisplayMode)cmbClosedDisplayMode.SelectedIndex; + + abA.ClosedDisplayMode = + abB.ClosedDisplayMode = closedDisplayMode; + } + + private void CmbIsOpen_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbIsOpen == null) return; + + bool isOpen = cmbIsOpen.SelectedIndex == 1; + + abA.IsOpen = + abB.IsOpen = isOpen; + } + } +} \ No newline at end of file diff --git a/controls/dev/CommonStyles/TestUI/BlankPage.xaml b/controls/dev/CommonStyles/TestUI/BlankPage.xaml new file mode 100644 index 0000000000..f7a0e27db9 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/BlankPage.xaml @@ -0,0 +1,12 @@ + + + + diff --git a/controls/dev/CommonStyles/TestUI/BlankPage.xaml.cs b/controls/dev/CommonStyles/TestUI/BlankPage.xaml.cs new file mode 100644 index 0000000000..60735d4863 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/BlankPage.xaml.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Common; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Media; +using MUXControlsTestApp.Utilities; +using System.Linq; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using Windows.UI; + +namespace MUXControlsTestApp +{ + [TopLevelTestPage(Name="Blank")] + public sealed partial class BlankPage : TestPage + { + public BlankPage() + { + this.InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml b/controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml new file mode 100644 index 0000000000..c2f610e044 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml.cs b/controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml.cs new file mode 100644 index 0000000000..66347d63aa --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/CommandBarCenterPage.xaml.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.UI.Xaml.Controls; + +namespace MUXControlsTestApp +{ + [TopLevelTestPage(Name="CommandBar")] + public sealed partial class CommandBarCenterPage : TestPage + { + public CommandBarCenterPage() + { + this.InitializeComponent(); + + navigateToCommandBarSummary.Click += delegate { Frame.NavigateWithoutAnimation(typeof(CommandBarSummaryPage)); }; + navigateToCommandBar.Click += delegate { Frame.NavigateWithoutAnimation(typeof(CommandBarPage)); }; + } + } +} diff --git a/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml b/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml index e1f0887b38..91621c792e 100644 --- a/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml +++ b/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml @@ -8,32 +8,29 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> - - - - + - + - + - + @@ -44,26 +41,26 @@ - + - + - + - + @@ -80,24 +77,25 @@ - - - - - - + + + + + + + - - + + - - + + - + @@ -108,34 +106,34 @@ - + - + - - + + - - + + - + - - + + - - - + + + @@ -145,7 +143,7 @@ - + @@ -163,7 +161,7 @@ - + @@ -173,48 +171,48 @@ - + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - + @@ -224,7 +222,7 @@ Visible - + @@ -234,22 +232,22 @@ - - + + - - + + - + - + Visible @@ -262,13 +260,13 @@ - - + + - + Visible @@ -279,9 +277,9 @@ - + - + @@ -290,7 +288,7 @@ - + Visible @@ -302,12 +300,12 @@ - + - - + + - + Visible @@ -322,16 +320,32 @@ + - - + + + + + + + + + + + + + + + + + - + diff --git a/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml.cs b/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml.cs index ff4f185d28..cb986cc86b 100644 --- a/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml.cs +++ b/controls/dev/CommonStyles/TestUI/CommandBarPage.xaml.cs @@ -6,7 +6,6 @@ namespace MUXControlsTestApp { - [TopLevelTestPage(Name = "CommandBar")] public sealed partial class CommandBarPage : Page { public CommandBarPage() diff --git a/controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml b/controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml new file mode 100644 index 0000000000..f5dcfe3c58 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml @@ -0,0 +1,97 @@ + + + + + + + + Short + Medium + Long + + + + + Bottom + Right + Collapsed + + + + + Compact + Minimal + Hidden + + + + + Normal + Large + + + + + False + True + + + + + False + True + + + + + False + True + + + + + False + True + + + + + False + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml.cs b/controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml.cs new file mode 100644 index 0000000000..3cd05af707 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/CommandBarSummaryPage.xaml.cs @@ -0,0 +1,136 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Common; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using MUXControlsTestApp.Utilities; + +namespace MUXControlsTestApp +{ + public sealed partial class CommandBarSummaryPage : TestPage + { + public CommandBarSummaryPage() + { + this.InitializeComponent(); + } + + private void CB_Opened(object sender, object e) + { + cmbIsOpen.SelectedIndex = 1; + } + + private void CB_Closed(object sender, object e) + { + cmbIsOpen.SelectedIndex = 0; + } + + private void CmbLabelLength_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbLabelLength == null || tb == null) return; + + switch (cmbLabelLength.SelectedIndex) + { + case 0: + tb.Label = "Dog"; + break; + case 1: + tb.Label = "Golden Retriever"; + break; + default: + tb.Label = "Distinguished & Unique Old English Sheepdog"; + break; + } + } + + private void CmbDefaultLabelPosition_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbDefaultLabelPosition == null || cb == null) return; + + cb.DefaultLabelPosition = (CommandBarDefaultLabelPosition)cmbDefaultLabelPosition.SelectedIndex; + } + + private void CmbClosedDisplayMode_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbClosedDisplayMode == null || cb == null) return; + + cb.ClosedDisplayMode = (AppBarClosedDisplayMode)cmbClosedDisplayMode.SelectedIndex; + } + + private void CmbFontSize_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbFontSize == null) return; + + double fontSize = cmbFontSize.SelectedIndex == 0 ? 14 : 40; + + if (tb != null) + { + tb.FontSize = fontSize; + } + if (sb != null) + { + sb.FontSize = fontSize; + } + if (tsb != null) + { + tsb.FontSize = fontSize; + } + } + + private void CmbIsOpen_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbIsOpen == null || cb == null) return; + + cb.IsOpen = cmbIsOpen.SelectedIndex == 1; + } + + private void CmbIsDynamicOverflowEnabled_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbIsDynamicOverflowEnabled == null || cb == null) return; + + cb.IsDynamicOverflowEnabled = cmbIsDynamicOverflowEnabled.SelectedIndex == 1; + } + + private void CmbHasSecondaryCommand_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbHasSecondaryCommand == null || cb == null) return; + + if (cmbHasSecondaryCommand.SelectedIndex == 1 && cb.SecondaryCommands.Count == 0) + { + cb.SecondaryCommands.Add(sc); + } + else if (cmbHasSecondaryCommand.SelectedIndex == 0 && cb.SecondaryCommands.Count == 1) + { + cb.SecondaryCommands.Clear(); + } + } + + private void CmbHasSplitButton_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbHasSplitButton == null || ecsb == null) return; + + if (cmbHasSplitButton.SelectedIndex == 1 && !ecsb.IsLoaded) + { + cb.PrimaryCommands.Add(ecsb); + } + else if (cmbHasSplitButton.SelectedIndex == 0 && ecsb.IsLoaded) + { + cb.PrimaryCommands.Remove(ecsb); + } + } + + private void CmbHasToggleSplitButton_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (cmbHasToggleSplitButton == null || ectsb == null) return; + + if (cmbHasToggleSplitButton.SelectedIndex == 1 && !ectsb.IsLoaded) + { + cb.PrimaryCommands.Add(ectsb); + } + else if (cmbHasToggleSplitButton.SelectedIndex == 0 && ectsb.IsLoaded) + { + cb.PrimaryCommands.Remove(ectsb); + } + } + } +} \ No newline at end of file diff --git a/controls/dev/CommonStyles/TestUI/CommonStyles_TestUI.projitems b/controls/dev/CommonStyles/TestUI/CommonStyles_TestUI.projitems index 918225ad63..6521478fb6 100644 --- a/controls/dev/CommonStyles/TestUI/CommonStyles_TestUI.projitems +++ b/controls/dev/CommonStyles/TestUI/CommonStyles_TestUI.projitems @@ -10,6 +10,16 @@ CommonStyles_TestUI + + Designer + MSBuild:Compile + false + + + Designer + MSBuild:Compile + false + Designer MSBuild:Compile @@ -20,6 +30,16 @@ MSBuild:Compile false + + Designer + MSBuild:Compile + false + + + Designer + MSBuild:Compile + false + Designer MSBuild:Compile @@ -64,14 +84,26 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -80,6 +112,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -128,12 +164,24 @@ + + AppBarPage.xaml + + + BlankPage.xaml + BorderThicknessPage.xaml CommandBarPage.xaml + + CommandBarCenterPage.xaml + + + CommandBarSummaryPage.xaml + CommonStylesPage.xaml @@ -161,24 +209,36 @@ DatePickerPage.xaml + + FlatItemsControlPage.xaml + FlipViewPage.xaml GridViewPage.xaml + + ItemsControlPage.xaml + ListViewPage.xaml ListViewBasePage.xaml + + GroupedItemsControlPage.xaml + GroupedListViewBasePage.xaml NestedGridViewsPage.xaml + + NestedItemsControlsPage.xaml + NestedListViewsPage.xaml diff --git a/controls/dev/CommonStyles/TestUI/FlatItemsControlPage.xaml b/controls/dev/CommonStyles/TestUI/FlatItemsControlPage.xaml new file mode 100644 index 0000000000..3d53392a12 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/FlatItemsControlPage.xaml @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModernPanel + VirtualizingStackPanel + StackPanel + + + + + None + No TabStop + Single TabStop + Nested TabStops + + + + + + + + Local + Cycle + Once + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ItemsWrapGrid + ItemsStackPanel + VirtualizingStackPanel + + + + + None + No TabStop + Single TabStop + Nested TabStops + + + + + None + No TabStop + Single TabStop + Nested TabStops + + + + + + + + Local + Cycle + Once + + + + + + diff --git a/controls/dev/CommonStyles/TestUI/ItemsControlPage.xaml.cs b/controls/dev/CommonStyles/TestUI/ItemsControlPage.xaml.cs new file mode 100644 index 0000000000..8f0b346b01 --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/ItemsControlPage.xaml.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.UI.Xaml.Controls; + +namespace MUXControlsTestApp +{ + [TopLevelTestPage(Name="ItemsControl", Icon="ListView.png")] + public sealed partial class ItemsControlPage : TestPage + { + public ItemsControlPage() + { + this.InitializeComponent(); + + navigateToFlatItemsControl.Click += delegate { Frame.NavigateWithoutAnimation(typeof(FlatItemsControlPage)); }; + navigateToGroupedItemsControl.Click += delegate { Frame.NavigateWithoutAnimation(typeof(GroupedItemsControlPage)); }; + navigateToNestedItemsControls.Click += delegate { Frame.NavigateWithoutAnimation(typeof(NestedItemsControlsPage)); }; + } + } +} diff --git a/controls/dev/CommonStyles/TestUI/NestedGridViewsPage.xaml b/controls/dev/CommonStyles/TestUI/NestedGridViewsPage.xaml index ae06b3ae87..001805e8af 100644 --- a/controls/dev/CommonStyles/TestUI/NestedGridViewsPage.xaml +++ b/controls/dev/CommonStyles/TestUI/NestedGridViewsPage.xaml @@ -9,6 +9,10 @@ mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> + + + + @@ -126,11 +130,15 @@ - + + + + + + one + two + three + + + + + + First Nested ItemsControl + Second Nested ItemsControl + Third Nested ItemsControl + Fourth Nested ItemsControl + Fifth Nested ItemsControl + Sixth Nested ItemsControl + Seventh Nested ItemsControl + Eighth Nested ItemsControl + Ninth Nested ItemsControl + Tenth Nested ItemsControl + Eleventh Nested ItemsControl + Twelfth Nested ItemsControl + Thirteenth Nested ItemsControl + Fourteenth Nested ItemsControl + Fifteenth Nested ItemsControl + Sixteenth Nested ItemsControl + Seventeenth Nested ItemsControl + Eighteenth Nested ItemsControl + Nineteenth Nested ItemsControl + Twentieth Nested ItemsControl + Twenty-first Nested ItemsControl + Twenty-second Nested ItemsControl + Twenty-third Nested ItemsControl + Twenty-fourth Nested ItemsControl + Twenty-fifth Nested ItemsControl + Twenty-sixth Nested ItemsControl + Twenty-seventh Nested ItemsControl + Twenty-eighth Nested ItemsControl + Twenty-ninth Nested ItemsControl + Thirtieth Nested ItemsControl + Thirty-first Nested ItemsControl + Thirty-second Nested ItemsControl + Thirty-third Nested ItemsControl + Thirty-fourth Nested ItemsControl + Thirty-fifth Nested ItemsControl + + + + + + + + + + + + + + + + + + + + + one + two + three + four + five + six + + + + + + First Nested ItemsControl + Second Nested ItemsControl + Third Nested ItemsControl + Fourth Nested ItemsControl + Fifth Nested ItemsControl + Sixth Nested ItemsControl + Seventh Nested ItemsControl + Eighth Nested ItemsControl + Ninth Nested ItemsControl + Tenth Nested ItemsControl + Eleventh Nested ItemsControl + Twelfth Nested ItemsControl + Thirteenth Nested ItemsControl + Fourteenth Nested ItemsControl + Fifteenth Nested ItemsControl + Sixteenth Nested ItemsControl + Seventeenth Nested ItemsControl + Eighteenth Nested ItemsControl + Nineteenth Nested ItemsControl + Twentieth Nested ItemsControl + Twenty-first Nested ItemsControl + Twenty-second Nested ItemsControl + Twenty-third Nested ItemsControl + Twenty-fourth Nested ItemsControl + Twenty-fifth Nested ItemsControl + Twenty-sixth Nested ItemsControl + Twenty-seventh Nested ItemsControl + Twenty-eighth Nested ItemsControl + Twenty-ninth Nested ItemsControl + Thirtieth Nested ItemsControl + Thirty-first Nested ItemsControl + Thirty-second Nested ItemsControl + Thirty-third Nested ItemsControl + Thirty-fourth Nested ItemsControl + Thirty-fifth Nested ItemsControl + + + + + + diff --git a/controls/dev/CommonStyles/TestUI/NestedItemsControlsPage.xaml.cs b/controls/dev/CommonStyles/TestUI/NestedItemsControlsPage.xaml.cs new file mode 100644 index 0000000000..3affd222df --- /dev/null +++ b/controls/dev/CommonStyles/TestUI/NestedItemsControlsPage.xaml.cs @@ -0,0 +1,211 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; + +namespace MUXControlsTestApp +{ + public sealed partial class NestedItemsControlsPage : TestPage + { + private ItemsControl _outerItemsControl = null; + + public NestedItemsControlsPage() + { + this.InitializeComponent(); + + Loaded += NestedItemsControlsPage_Loaded; + } + + private void UpdateOuterItemsControl() + { + if (cmbUseOuterItemsControl != null) + { + if (_outerItemsControl != null) + { + _outerItemsControl.Visibility = Visibility.Collapsed; + } + + switch (cmbUseOuterItemsControl.SelectedIndex) + { + case 0: + { + _outerItemsControl = outerItemsControl1; + break; + } + case 1: + { + _outerItemsControl = outerItemsControl2; + break; + } + case 2: + { + _outerItemsControl = outerItemsControl3; + break; + } + case 3: + { + _outerItemsControl = outerItemsControl4; + break; + } + } + + if (_outerItemsControl != null) + { + _outerItemsControl.Visibility = Visibility.Visible; + + ChkOuterItemsControlIsTabStop_IsCheckedChanged(null, null); + CmbOuterItemsControlTabNavigation_SelectionChanged(null, null); + CmbOuterItemsControlXYFocusKeyboardNavigation_SelectionChanged(null, null); + } + } + } + + private void NestedItemsControlsPage_Loaded(object sender, RoutedEventArgs e) + { + UpdateOuterItemsControl(); + } + + private void CmbUseOuterItemsControl_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + UpdateOuterItemsControl(); + } + + private void ChkOuterItemsControlIsTabStop_IsCheckedChanged(object sender, RoutedEventArgs e) + { + if (_outerItemsControl != null && chkOuterItemsControlIsTabStop != null) + { + _outerItemsControl.IsTabStop = (bool)chkOuterItemsControlIsTabStop.IsChecked; + } + } + + private void CmbOuterItemsControlTabNavigation_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (_outerItemsControl != null && cmbOuterItemsControlTabNavigation != null) + { + _outerItemsControl.TabNavigation = (KeyboardNavigationMode)cmbOuterItemsControlTabNavigation.SelectedIndex; + } + } + + private void CmbOuterItemsControlXYFocusKeyboardNavigation_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (_outerItemsControl != null && cmbOuterItemsControlXYFocusKeyboardNavigation != null) + { + _outerItemsControl.XYFocusKeyboardNavigation = (XYFocusKeyboardNavigationMode)cmbOuterItemsControlXYFocusKeyboardNavigation.SelectedIndex; + } + } + + private void CmbOuterItemsPresenterHeader_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (_outerItemsControl != null && cmbOuterItemsPresenterHeader != null) + { + ItemsPresenter outerItemsPresenter = FindElementOfTypeInSubtree(_outerItemsControl); + + if (outerItemsPresenter != null) + { + switch (cmbOuterItemsPresenterHeader.SelectedIndex) + { + case 0: /*None*/ + outerItemsPresenter.Header = null; + break; + case 1: /*No TabStop*/ + outerItemsPresenter.Header = new TextBlock() + { + FontSize = 18.0, + Margin = new Thickness(10.0), + Text = "ItemsPresenter Header" + }; + break; + case 2: /*Single TabStop*/ + outerItemsPresenter.Header = new Button() + { + Content = "ItemsPresenter Header", + FontSize = 18.0, + Margin = new Thickness(10.0) + }; + break; + case 3: /*Nested TabStops*/ + outerItemsPresenter.Header = new Button() + { + Content = new Button() + { + Content = "ItemsPresenter Header", + Margin = new Thickness(10.0) + }, + FontSize = 18.0, + Margin = new Thickness(10.0) + }; + break; + } + } + } + } + + private void CmbOuterItemsPresenterFooter_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (_outerItemsControl != null && cmbOuterItemsPresenterFooter != null) + { + ItemsPresenter outerItemsPresenter = FindElementOfTypeInSubtree(_outerItemsControl); + + if (outerItemsPresenter != null) + { + switch (cmbOuterItemsPresenterFooter.SelectedIndex) + { + case 0: /*None*/ + outerItemsPresenter.Footer = null; + break; + case 1: /*No TabStop*/ + outerItemsPresenter.Footer = new TextBlock() + { + FontSize = 18.0, + Margin = new Thickness(10.0), + Text = "ItemsPresenter Footer" + }; + break; + case 2: /*Single TabStop*/ + outerItemsPresenter.Footer = new Button() + { + Content = "ItemsPresenter Footer", + FontSize = 18.0, + Margin = new Thickness(10.0) + }; + break; + case 3: /*Nested TabStops*/ + outerItemsPresenter.Footer = new Button() + { + Content = new Button() + { + Content = "ItemsPresenter Footer", + Margin = new Thickness(10.0) + }, + FontSize = 18.0, + Margin = new Thickness(10.0) + }; + break; + } + } + } + } + + private static T FindElementOfTypeInSubtree(DependencyObject element) where T : DependencyObject + { + if (element == null) + return null; + + if (element is T) + return (T)element; + + int childrenCount = VisualTreeHelper.GetChildrenCount(element); + for (int i = 0; i < childrenCount; i++) + { + var result = FindElementOfTypeInSubtree(VisualTreeHelper.GetChild(element, i)); + if (result != null) + return result; + } + + return null; + } + } +} diff --git a/controls/dev/CommonStyles/TextBox_themeresources.xaml b/controls/dev/CommonStyles/TextBox_themeresources.xaml index ba1bebf587..ad99bb5d1a 100644 --- a/controls/dev/CommonStyles/TextBox_themeresources.xaml +++ b/controls/dev/CommonStyles/TextBox_themeresources.xaml @@ -34,7 +34,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -343,4 +343,4 @@ - \ No newline at end of file + diff --git a/controls/dev/Generated/MapControl.properties.cpp b/controls/dev/Generated/MapControl.properties.cpp new file mode 100644 index 0000000000..f34fb1c484 --- /dev/null +++ b/controls/dev/Generated/MapControl.properties.cpp @@ -0,0 +1,220 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "MapControl.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(MapControl) +} + +#include "MapControl.g.cpp" + +GlobalDependencyProperty MapControlProperties::s_CenterProperty{ nullptr }; +GlobalDependencyProperty MapControlProperties::s_InteractiveControlsVisibleProperty{ nullptr }; +GlobalDependencyProperty MapControlProperties::s_LayersProperty{ nullptr }; +GlobalDependencyProperty MapControlProperties::s_MapServiceTokenProperty{ nullptr }; +GlobalDependencyProperty MapControlProperties::s_ZoomLevelProperty{ nullptr }; + +MapControlProperties::MapControlProperties() + : m_mapElementClickEventSource{static_cast(this)} + , m_mapServiceErrorOccurredEventSource{static_cast(this)} +{ + EnsureProperties(); +} + +void MapControlProperties::EnsureProperties() +{ + if (!s_CenterProperty) + { + s_CenterProperty = + InitializeDependencyProperty( + L"Center", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnCenterPropertyChanged)); + } + if (!s_InteractiveControlsVisibleProperty) + { + s_InteractiveControlsVisibleProperty = + InitializeDependencyProperty( + L"InteractiveControlsVisible", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnInteractiveControlsVisiblePropertyChanged)); + } + if (!s_LayersProperty) + { + s_LayersProperty = + InitializeDependencyProperty( + L"Layers", + winrt::name_of>(), + winrt::name_of(), + false /* isAttached */, + ValueHelper>::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnLayersPropertyChanged)); + } + if (!s_MapServiceTokenProperty) + { + s_MapServiceTokenProperty = + InitializeDependencyProperty( + L"MapServiceToken", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnMapServiceTokenPropertyChanged)); + } + if (!s_ZoomLevelProperty) + { + s_ZoomLevelProperty = + InitializeDependencyProperty( + L"ZoomLevel", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnZoomLevelPropertyChanged)); + } +} + +void MapControlProperties::ClearProperties() +{ + s_CenterProperty = nullptr; + s_InteractiveControlsVisibleProperty = nullptr; + s_LayersProperty = nullptr; + s_MapServiceTokenProperty = nullptr; + s_ZoomLevelProperty = nullptr; +} + +void MapControlProperties::OnCenterPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapControlProperties::OnInteractiveControlsVisiblePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapControlProperties::OnLayersPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapControlProperties::OnMapServiceTokenPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapControlProperties::OnZoomLevelPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapControlProperties::Center(winrt::Geopoint const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_CenterProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::Geopoint MapControlProperties::Center() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_CenterProperty)); +} + +void MapControlProperties::InteractiveControlsVisible(bool value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_InteractiveControlsVisibleProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +bool MapControlProperties::InteractiveControlsVisible() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_InteractiveControlsVisibleProperty)); +} + +void MapControlProperties::Layers(winrt::IVector const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_LayersProperty, ValueHelper>::BoxValueIfNecessary(value)); + } +} + +winrt::IVector MapControlProperties::Layers() +{ + return ValueHelper>::CastOrUnbox(static_cast(this)->GetValue(s_LayersProperty)); +} + +void MapControlProperties::MapServiceToken(winrt::hstring const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_MapServiceTokenProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::hstring MapControlProperties::MapServiceToken() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_MapServiceTokenProperty)); +} + +void MapControlProperties::ZoomLevel(double value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_ZoomLevelProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +double MapControlProperties::ZoomLevel() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_ZoomLevelProperty)); +} + +winrt::event_token MapControlProperties::MapElementClick(winrt::TypedEventHandler const& value) +{ + return m_mapElementClickEventSource.add(value); +} + +void MapControlProperties::MapElementClick(winrt::event_token const& token) +{ + m_mapElementClickEventSource.remove(token); +} + +winrt::event_token MapControlProperties::MapServiceErrorOccurred(winrt::TypedEventHandler const& value) +{ + return m_mapServiceErrorOccurredEventSource.add(value); +} + +void MapControlProperties::MapServiceErrorOccurred(winrt::event_token const& token) +{ + m_mapServiceErrorOccurredEventSource.remove(token); +} diff --git a/controls/dev/Generated/MapControl.properties.h b/controls/dev/Generated/MapControl.properties.h new file mode 100644 index 0000000000..5dfc1a4300 --- /dev/null +++ b/controls/dev/Generated/MapControl.properties.h @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class MapControlProperties +{ +public: + MapControlProperties(); + + void Center(winrt::Geopoint const& value); + winrt::Geopoint Center(); + + void InteractiveControlsVisible(bool value); + bool InteractiveControlsVisible(); + + void Layers(winrt::IVector const& value); + winrt::IVector Layers(); + + void MapServiceToken(winrt::hstring const& value); + winrt::hstring MapServiceToken(); + + void ZoomLevel(double value); + double ZoomLevel(); + + static winrt::DependencyProperty CenterProperty() { return s_CenterProperty; } + static winrt::DependencyProperty InteractiveControlsVisibleProperty() { return s_InteractiveControlsVisibleProperty; } + static winrt::DependencyProperty LayersProperty() { return s_LayersProperty; } + static winrt::DependencyProperty MapServiceTokenProperty() { return s_MapServiceTokenProperty; } + static winrt::DependencyProperty ZoomLevelProperty() { return s_ZoomLevelProperty; } + + static GlobalDependencyProperty s_CenterProperty; + static GlobalDependencyProperty s_InteractiveControlsVisibleProperty; + static GlobalDependencyProperty s_LayersProperty; + static GlobalDependencyProperty s_MapServiceTokenProperty; + static GlobalDependencyProperty s_ZoomLevelProperty; + + winrt::event_token MapElementClick(winrt::TypedEventHandler const& value); + void MapElementClick(winrt::event_token const& token); + winrt::event_token MapServiceErrorOccurred(winrt::TypedEventHandler const& value); + void MapServiceErrorOccurred(winrt::event_token const& token); + + event_source> m_mapElementClickEventSource; + event_source> m_mapServiceErrorOccurredEventSource; + + static void EnsureProperties(); + static void ClearProperties(); + + static void OnCenterPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnInteractiveControlsVisiblePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnLayersPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnMapServiceTokenPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnZoomLevelPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); +}; diff --git a/controls/dev/Generated/MapElement.properties.cpp b/controls/dev/Generated/MapElement.properties.cpp new file mode 100644 index 0000000000..b6fd14f34b --- /dev/null +++ b/controls/dev/Generated/MapElement.properties.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "MapElement.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithBasicFactory(MapElement) +} + +#include "MapElement.g.cpp" + + diff --git a/controls/dev/Generated/MapElementClickEventArgs.properties.cpp b/controls/dev/Generated/MapElementClickEventArgs.properties.cpp new file mode 100644 index 0000000000..379ccb96b4 --- /dev/null +++ b/controls/dev/Generated/MapElementClickEventArgs.properties.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "MapElementClickEventArgs.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithBasicFactory(MapElementClickEventArgs) +} + +#include "MapElementClickEventArgs.g.cpp" + + diff --git a/controls/dev/Generated/MapElementsLayer.properties.cpp b/controls/dev/Generated/MapElementsLayer.properties.cpp new file mode 100644 index 0000000000..8549fbb547 --- /dev/null +++ b/controls/dev/Generated/MapElementsLayer.properties.cpp @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "MapElementsLayer.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(MapElementsLayer) +} + +#include "MapElementsLayer.g.cpp" + +GlobalDependencyProperty MapElementsLayerProperties::s_MapElementsProperty{ nullptr }; + +MapElementsLayerProperties::MapElementsLayerProperties() + : m_mapElementClickEventSource{static_cast(this)} +{ + EnsureProperties(); +} + +void MapElementsLayerProperties::EnsureProperties() +{ + if (!s_MapElementsProperty) + { + s_MapElementsProperty = + InitializeDependencyProperty( + L"MapElements", + winrt::name_of>(), + winrt::name_of(), + false /* isAttached */, + ValueHelper>::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnMapElementsPropertyChanged)); + } +} + +void MapElementsLayerProperties::ClearProperties() +{ + s_MapElementsProperty = nullptr; +} + +void MapElementsLayerProperties::OnMapElementsPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapElementsLayerProperties::MapElements(winrt::IVector const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_MapElementsProperty, ValueHelper>::BoxValueIfNecessary(value)); + } +} + +winrt::IVector MapElementsLayerProperties::MapElements() +{ + return ValueHelper>::CastOrUnbox(static_cast(this)->GetValue(s_MapElementsProperty)); +} + +winrt::event_token MapElementsLayerProperties::MapElementClick(winrt::TypedEventHandler const& value) +{ + return m_mapElementClickEventSource.add(value); +} + +void MapElementsLayerProperties::MapElementClick(winrt::event_token const& token) +{ + m_mapElementClickEventSource.remove(token); +} diff --git a/controls/dev/Generated/MapElementsLayer.properties.h b/controls/dev/Generated/MapElementsLayer.properties.h new file mode 100644 index 0000000000..5b853ea7d0 --- /dev/null +++ b/controls/dev/Generated/MapElementsLayer.properties.h @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class MapElementsLayerProperties +{ +public: + MapElementsLayerProperties(); + + void MapElements(winrt::IVector const& value); + winrt::IVector MapElements(); + + static winrt::DependencyProperty MapElementsProperty() { return s_MapElementsProperty; } + + static GlobalDependencyProperty s_MapElementsProperty; + + winrt::event_token MapElementClick(winrt::TypedEventHandler const& value); + void MapElementClick(winrt::event_token const& token); + + event_source> m_mapElementClickEventSource; + + static void EnsureProperties(); + static void ClearProperties(); + + static void OnMapElementsPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); +}; diff --git a/controls/dev/Generated/MapIcon.properties.cpp b/controls/dev/Generated/MapIcon.properties.cpp new file mode 100644 index 0000000000..cec0013a39 --- /dev/null +++ b/controls/dev/Generated/MapIcon.properties.cpp @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "MapIcon.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(MapIcon) +} + +#include "MapIcon.g.cpp" + +GlobalDependencyProperty MapIconProperties::s_LocationProperty{ nullptr }; + +MapIconProperties::MapIconProperties() +{ + EnsureProperties(); +} + +void MapIconProperties::EnsureProperties() +{ + if (!s_LocationProperty) + { + s_LocationProperty = + InitializeDependencyProperty( + L"Location", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnLocationPropertyChanged)); + } +} + +void MapIconProperties::ClearProperties() +{ + s_LocationProperty = nullptr; +} + +void MapIconProperties::OnLocationPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void MapIconProperties::Location(winrt::Geopoint const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_LocationProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::Geopoint MapIconProperties::Location() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_LocationProperty)); +} diff --git a/controls/dev/Generated/MapIcon.properties.h b/controls/dev/Generated/MapIcon.properties.h new file mode 100644 index 0000000000..92d908dc5e --- /dev/null +++ b/controls/dev/Generated/MapIcon.properties.h @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class MapIconProperties +{ +public: + MapIconProperties(); + + void Location(winrt::Geopoint const& value); + winrt::Geopoint Location(); + + static winrt::DependencyProperty LocationProperty() { return s_LocationProperty; } + + static GlobalDependencyProperty s_LocationProperty; + + static void EnsureProperties(); + static void ClearProperties(); + + static void OnLocationPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); +}; diff --git a/controls/dev/Generated/MapLayer.properties.cpp b/controls/dev/Generated/MapLayer.properties.cpp new file mode 100644 index 0000000000..06a8f102b0 --- /dev/null +++ b/controls/dev/Generated/MapLayer.properties.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "MapLayer.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithBasicFactory(MapLayer) +} + +#include "MapLayer.g.cpp" + + diff --git a/controls/dev/Generated/SelectorBar.properties.cpp b/controls/dev/Generated/SelectorBar.properties.cpp new file mode 100644 index 0000000000..4072e99bee --- /dev/null +++ b/controls/dev/Generated/SelectorBar.properties.cpp @@ -0,0 +1,107 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "SelectorBar.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(SelectorBar) +} + +#include "SelectorBar.g.cpp" + +GlobalDependencyProperty SelectorBarProperties::s_ItemsProperty{ nullptr }; +GlobalDependencyProperty SelectorBarProperties::s_SelectedItemProperty{ nullptr }; + +SelectorBarProperties::SelectorBarProperties() + : m_selectionChangedEventSource{static_cast(this)} +{ + EnsureProperties(); +} + +void SelectorBarProperties::EnsureProperties() +{ + if (!s_ItemsProperty) + { + s_ItemsProperty = + InitializeDependencyProperty( + L"Items", + winrt::name_of>(), + winrt::name_of(), + false /* isAttached */, + ValueHelper>::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnItemsPropertyChanged)); + } + if (!s_SelectedItemProperty) + { + s_SelectedItemProperty = + InitializeDependencyProperty( + L"SelectedItem", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnSelectedItemPropertyChanged)); + } +} + +void SelectorBarProperties::ClearProperties() +{ + s_ItemsProperty = nullptr; + s_SelectedItemProperty = nullptr; +} + +void SelectorBarProperties::OnItemsPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void SelectorBarProperties::OnSelectedItemPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void SelectorBarProperties::Items(winrt::IVector const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_ItemsProperty, ValueHelper>::BoxValueIfNecessary(value)); + } +} + +winrt::IVector SelectorBarProperties::Items() +{ + return ValueHelper>::CastOrUnbox(static_cast(this)->GetValue(s_ItemsProperty)); +} + +void SelectorBarProperties::SelectedItem(winrt::SelectorBarItem const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_SelectedItemProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::SelectorBarItem SelectorBarProperties::SelectedItem() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_SelectedItemProperty)); +} + +winrt::event_token SelectorBarProperties::SelectionChanged(winrt::TypedEventHandler const& value) +{ + return m_selectionChangedEventSource.add(value); +} + +void SelectorBarProperties::SelectionChanged(winrt::event_token const& token) +{ + m_selectionChangedEventSource.remove(token); +} diff --git a/controls/dev/Generated/SelectorBar.properties.h b/controls/dev/Generated/SelectorBar.properties.h new file mode 100644 index 0000000000..ad5b6999f8 --- /dev/null +++ b/controls/dev/Generated/SelectorBar.properties.h @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class SelectorBarProperties +{ +public: + SelectorBarProperties(); + + void Items(winrt::IVector const& value); + winrt::IVector Items(); + + void SelectedItem(winrt::SelectorBarItem const& value); + winrt::SelectorBarItem SelectedItem(); + + static winrt::DependencyProperty ItemsProperty() { return s_ItemsProperty; } + static winrt::DependencyProperty SelectedItemProperty() { return s_SelectedItemProperty; } + + static GlobalDependencyProperty s_ItemsProperty; + static GlobalDependencyProperty s_SelectedItemProperty; + + winrt::event_token SelectionChanged(winrt::TypedEventHandler const& value); + void SelectionChanged(winrt::event_token const& token); + + event_source> m_selectionChangedEventSource; + + static void EnsureProperties(); + static void ClearProperties(); + + static void OnItemsPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnSelectedItemPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); +}; diff --git a/controls/dev/Generated/SelectorBarItem.properties.cpp b/controls/dev/Generated/SelectorBarItem.properties.cpp new file mode 100644 index 0000000000..7bba12c1c6 --- /dev/null +++ b/controls/dev/Generated/SelectorBarItem.properties.cpp @@ -0,0 +1,98 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "SelectorBarItem.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(SelectorBarItem) +} + +#include "SelectorBarItem.g.cpp" + +GlobalDependencyProperty SelectorBarItemProperties::s_IconProperty{ nullptr }; +GlobalDependencyProperty SelectorBarItemProperties::s_TextProperty{ nullptr }; + +SelectorBarItemProperties::SelectorBarItemProperties() +{ + EnsureProperties(); +} + +void SelectorBarItemProperties::EnsureProperties() +{ + ItemContainer::EnsureProperties(); + if (!s_IconProperty) + { + s_IconProperty = + InitializeDependencyProperty( + L"Icon", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnIconPropertyChanged)); + } + if (!s_TextProperty) + { + s_TextProperty = + InitializeDependencyProperty( + L"Text", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnTextPropertyChanged)); + } +} + +void SelectorBarItemProperties::ClearProperties() +{ + s_IconProperty = nullptr; + s_TextProperty = nullptr; + ItemContainer::ClearProperties(); +} + +void SelectorBarItemProperties::OnIconPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void SelectorBarItemProperties::OnTextPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void SelectorBarItemProperties::Icon(winrt::IconElement const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_IconProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::IconElement SelectorBarItemProperties::Icon() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_IconProperty)); +} + +void SelectorBarItemProperties::Text(winrt::hstring const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_TextProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::hstring SelectorBarItemProperties::Text() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_TextProperty)); +} diff --git a/controls/dev/Generated/SelectorBarItem.properties.h b/controls/dev/Generated/SelectorBarItem.properties.h new file mode 100644 index 0000000000..c4821e005d --- /dev/null +++ b/controls/dev/Generated/SelectorBarItem.properties.h @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class SelectorBarItemProperties +{ +public: + SelectorBarItemProperties(); + + void Icon(winrt::IconElement const& value); + winrt::IconElement Icon(); + + void Text(winrt::hstring const& value); + winrt::hstring Text(); + + static winrt::DependencyProperty IconProperty() { return s_IconProperty; } + static winrt::DependencyProperty TextProperty() { return s_TextProperty; } + + static GlobalDependencyProperty s_IconProperty; + static GlobalDependencyProperty s_TextProperty; + + static void EnsureProperties(); + static void ClearProperties(); + + static void OnIconPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnTextPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); +}; diff --git a/controls/dev/Generated/SelectorBarItemAutomationPeer.properties.cpp b/controls/dev/Generated/SelectorBarItemAutomationPeer.properties.cpp new file mode 100644 index 0000000000..bc29854f7c --- /dev/null +++ b/controls/dev/Generated/SelectorBarItemAutomationPeer.properties.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "SelectorBarItemAutomationPeer.h" + +namespace winrt::Microsoft::UI::Xaml::Automation::Peers +{ + CppWinRTActivatableClassWithBasicFactory(SelectorBarItemAutomationPeer) +} + +#include "SelectorBarItemAutomationPeer.g.cpp" + + diff --git a/controls/dev/Generated/SelectorBarTestHooks.properties.cpp b/controls/dev/Generated/SelectorBarTestHooks.properties.cpp new file mode 100644 index 0000000000..f991405ebc --- /dev/null +++ b/controls/dev/Generated/SelectorBarTestHooks.properties.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "SelectorBarTestHooks.h" + +namespace winrt::Microsoft::UI::Private::Controls +{ + CppWinRTActivatableClassWithBasicFactory(SelectorBarTestHooks) +} + +#include "SelectorBarTestHooks.g.cpp" + + diff --git a/controls/dev/ItemContainer/InteractionTests/ItemContainerTests.cs b/controls/dev/ItemContainer/InteractionTests/ItemContainerTests.cs index 99a89e1851..537b3c44bc 100644 --- a/controls/dev/ItemContainer/InteractionTests/ItemContainerTests.cs +++ b/controls/dev/ItemContainer/InteractionTests/ItemContainerTests.cs @@ -38,12 +38,6 @@ public void TestCleanup() TestCleanupHelper.Cleanup(); } - [TestMethod] - public void BasicTest() - { - Log.Comment("ItemContainer Basic Test"); - } - #if MUX_PRERELEASE [TestMethod] [TestProperty("Description", "Verify ItemInvoked via mouse")] @@ -150,7 +144,7 @@ private string IsItemContainerSelected() Log.Comment("Retrieving IsSelectedTextBlock"); Edit isSelectedTextBlock = new Edit(FindElement.ById("IsSelectedTextBlock")); - Verify.IsNotNull(btnGetIsSelected, "Verifying that IsSelectedTextBlock was found"); + Verify.IsNotNull(isSelectedTextBlock, "Verifying that IsSelectedTextBlock was found"); btnGetIsSelected.Invoke(); Wait.ForIdle(); diff --git a/controls/dev/ItemContainer/ItemContainer.cpp b/controls/dev/ItemContainer/ItemContainer.cpp index 13dc93c103..7ce8e03520 100644 --- a/controls/dev/ItemContainer/ItemContainer.cpp +++ b/controls/dev/ItemContainer/ItemContainer.cpp @@ -59,11 +59,11 @@ void ItemContainer::OnApplyTemplate() // If the Child property is already set, add it to the tree. After this point, the // property changed event for Child property will add it to the tree. - if (Child() != nullptr) + if (const auto& child = Child()) { if (auto&& rootPanel = m_rootPanel.get()) { - rootPanel.Children().InsertAt(0, Child()); + rootPanel.Children().InsertAt(0, child); } } @@ -183,6 +183,7 @@ void ItemContainer::UpdateVisualState(bool useTransitions) if (!IsEnabled()) { GoToState(s_disabledStateName, useTransitions); + GoToState(IsSelected() ? s_selectedNormalStateName : s_unselectedNormalStateName, useTransitions); } else { diff --git a/controls/dev/ItemContainer/ItemContainer.h b/controls/dev/ItemContainer/ItemContainer.h index b613b0f1e2..6f4d61982b 100644 --- a/controls/dev/ItemContainer/ItemContainer.h +++ b/controls/dev/ItemContainer/ItemContainer.h @@ -18,10 +18,10 @@ class ItemContainer : ~ItemContainer(); // IFrameworkElement - void OnApplyTemplate(); + virtual void OnApplyTemplate(); // IUIElement - winrt::AutomationPeer OnCreateAutomationPeer(); + virtual winrt::AutomationPeer OnCreateAutomationPeer(); void OnDoubleTapped(winrt::DoubleTappedRoutedEventArgs const& args); void OnKeyDown(winrt::KeyRoutedEventArgs const& args); diff --git a/controls/dev/ItemContainer/ItemContainerAutomationPeer.h b/controls/dev/ItemContainer/ItemContainerAutomationPeer.h index 980713a989..d7cca0cd3f 100644 --- a/controls/dev/ItemContainer/ItemContainerAutomationPeer.h +++ b/controls/dev/ItemContainer/ItemContainerAutomationPeer.h @@ -9,16 +9,15 @@ class ItemContainerAutomationPeer : public ReferenceTracker { - public: ItemContainerAutomationPeer(winrt::FrameworkElement const& owner); // IAutomationPeerOverrides - winrt::hstring GetNameCore(); + virtual winrt::hstring GetNameCore(); winrt::IInspectable GetPatternCore(winrt::PatternInterface const& patternInterface); winrt::AutomationControlType GetAutomationControlTypeCore(); - winrt::hstring GetLocalizedControlTypeCore(); - winrt::hstring GetClassNameCore(); + virtual winrt::hstring GetLocalizedControlTypeCore(); + virtual winrt::hstring GetClassNameCore(); // IInvokeProvider void Invoke(); diff --git a/controls/dev/ItemContainer/ItemContainerTrace.h b/controls/dev/ItemContainer/ItemContainerTrace.h index 752550cfb4..3cb75ff301 100644 --- a/controls/dev/ItemContainer/ItemContainerTrace.h +++ b/controls/dev/ItemContainer/ItemContainerTrace.h @@ -4,7 +4,7 @@ #pragma once #include "common.h" -#include "TraceLogging.h" +#include "MuxcTraceLogging.h" #include "Utils.h" #include "MUXControlsTestHooks.h" @@ -87,7 +87,7 @@ class ItemContainerTrace if (includeTraceLogging) { // TraceViewers - // http://toolbox/pef + // http://toolbox/pef // http://fastetw/index.aspx TraceLoggingWrite( g_hLoggingProvider, @@ -123,7 +123,7 @@ class ItemContainerTrace if (includeTraceLogging) { // TraceViewers - // http://toolbox/pef + // http://toolbox/pef // http://fastetw/index.aspx TraceLoggingWrite( g_hLoggingProvider, @@ -152,7 +152,7 @@ class ItemContainerTrace static void TracePerfInfo(PCWSTR info) noexcept { // TraceViewers - // http://toolbox/pef + // http://toolbox/pef // http://fastetw/index.aspx TraceLoggingWrite( g_hPerfProvider, diff --git a/controls/dev/ItemsView/APITests/ItemsViewTests.cs b/controls/dev/ItemsView/APITests/ItemsViewTests.cs index 7325d2d451..3bd9d52b75 100644 --- a/controls/dev/ItemsView/APITests/ItemsViewTests.cs +++ b/controls/dev/ItemsView/APITests/ItemsViewTests.cs @@ -119,7 +119,7 @@ public void VerifyPropertyValuesAfterTemplateApplication() Verify.AreEqual(c_defaultUIItemsViewWidth, itemsView.ActualWidth); Verify.AreEqual(c_defaultUIItemsViewHeight, itemsView.ActualHeight); - Log.Comment("Verifying ItemsView property values after Loaded event"); + Log.Comment("Verifying ScrollView property values after Loaded event"); ScrollView scrollView = ItemsViewTestHooks.GetScrollViewPart(itemsView); Verify.IsNotNull(scrollView); @@ -287,6 +287,61 @@ public void VerifyPropertySetters() } } + [TestMethod] + [TestProperty("Description", "Loads and populates an ItemsView with an ItemsSource made of ItemContainers.")] + public void CanUseItemsSourceWithItemContainers() + { + using (PrivateLoggingHelper privateIVLoggingHelper = new PrivateLoggingHelper("ItemsView")) + { + ItemsView itemsView = null; + List itemsSource = new List(); + AutoResetEvent itemsViewLoadedEvent = new AutoResetEvent(false); + + RunOnUIThread.Execute(() => + { + for (int i = 0; i < 3; i++) + { + ItemContainer itemContainer = new ItemContainer() + { + Name = "itemContainer" + i.ToString(), + Child = new TextBlock() + { + Text = i.ToString() + } + }; + itemsSource.Add(itemContainer); + } + + itemsView = new ItemsView() { ItemsSource = itemsSource }; + SetupDefaultUI(itemsView, itemsViewLoadedEvent); + }); + + WaitForEvent("Waiting for Loaded event", itemsViewLoadedEvent); + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + Log.Comment("Logging ItemsView property values after Loaded event"); + LogItemsViewProperties(itemsView); + + Log.Comment("Accessing inner ItemsRepeater"); + ItemsRepeater itemsRepeater = ItemsViewTestHooks.GetItemsRepeaterPart(itemsView); + Verify.IsNotNull(itemsRepeater); + + Log.Comment("Verifying ItemsRepeater children count"); + int childrenCount = VisualTreeHelper.GetChildrenCount(itemsRepeater); + Verify.AreEqual(3, childrenCount); + + Log.Comment($"Extracting first ItemContainer, children count: {childrenCount}"); + ItemContainer itemContainer = itemsRepeater.FindVisualChildByType(); + Verify.IsNotNull(itemContainer); + + Log.Comment("Verifying ItemsContainer name"); + Verify.AreEqual("itemContainer0", itemContainer.Name); + }); + } + } + [TestMethod] [TestProperty("Description", "Loads and populates an ItemsView, changes SelectionMode property to all enum values.")] public void CanChangeSelectionModeProperty() diff --git a/controls/dev/ItemsView/InteractionTests/ItemsViewTestsWithInputHelper.cs b/controls/dev/ItemsView/InteractionTests/ItemsViewTestsWithInputHelper.cs index 0396f03d86..f57299cf9b 100644 --- a/controls/dev/ItemsView/InteractionTests/ItemsViewTestsWithInputHelper.cs +++ b/controls/dev/ItemsView/InteractionTests/ItemsViewTestsWithInputHelper.cs @@ -27,6 +27,7 @@ public class ItemsViewTestsWithInputHelper [TestProperty("RunAs", "User")] [TestProperty("Classification", "Integration")] [TestProperty("TestPass:IncludeOnlyOn", "Desktop")] + [TestProperty("IsolationLevel", "Method")] public static void ClassInitialize(TestContext testContext) { TestEnvironment.Initialize(testContext); @@ -761,8 +762,8 @@ public void BringFocusedItemIntoView() Button btnClearLogs = new Button(FindElement.ById("btnClearLogs")); Verify.IsNotNull(btnClearLogs, "Verifying that btnClearLogs was found"); - Log.Comment("Clicking center of btnClearLogs."); - btnClearLogs.Click(); + Log.Comment("Invoke btnClearLogs."); + btnClearLogs.Invoke(); Wait.ForIdle(); LogAndClearTraces(); @@ -1516,8 +1517,8 @@ private void StartBringItemIntoView(bool clearItemAspectRatios) Button btnClearLogs = new Button(FindElement.ById("btnClearLogs")); Verify.IsNotNull(btnClearLogs, "Verifying that btnClearLogs was found"); - Log.Comment("Clicking center of btnClearLogs."); - btnClearLogs.Click(); + Log.Comment("Invoking btnClearLogs."); + btnClearLogs.Invoke(); Wait.ForIdle(); LogAndClearTraces(); @@ -2647,18 +2648,35 @@ private void LogScrollViewInfo(UIObject itemsViewUIObject, double? expectedVerti if (getScrollViewView == true) { - double horizontalOffset; - double verticalOffset; - float zoomFactor; + int attempts = 0; + double verticalOffsetDelta = 0.0; + bool verticalOffsetDeltaTooLarge = false; - GetScrollViewView(out horizontalOffset, out verticalOffset, out zoomFactor); - Log.Comment("horizontalOffset={0}", horizontalOffset); - Log.Comment("verticalOffset={0}", verticalOffset); - Log.Comment("zoomFactor={0}", zoomFactor); + do + { + Wait.ForIdle(); + + double horizontalOffset; + double verticalOffset; + float zoomFactor; + + GetScrollViewView(out horizontalOffset, out verticalOffset, out zoomFactor); + Log.Comment("horizontalOffset={0}", horizontalOffset); + Log.Comment("verticalOffset={0}", verticalOffset); + Log.Comment("zoomFactor={0}", zoomFactor); + + if (expectedVerticalOffset != null) + { + attempts++; + verticalOffsetDelta = Math.Abs((double)expectedVerticalOffset - verticalOffset); + verticalOffsetDeltaTooLarge = verticalOffsetDelta > 0.5; + } + } + while (verticalOffsetDeltaTooLarge && attempts <= 3); if (expectedVerticalOffset != null) { - Verify.IsLessThanOrEqual(Math.Abs((double)expectedVerticalOffset - verticalOffset), 0.5, "Verifying verticalOffset is close to " + expectedVerticalOffset); + Verify.IsLessThanOrEqual(verticalOffsetDelta, 0.5, "Verifying verticalOffset is close to " + expectedVerticalOffset); } } } diff --git a/controls/dev/ItemsView/ItemsView.cpp b/controls/dev/ItemsView/ItemsView.cpp index 123ae448fa..cb1685e243 100644 --- a/controls/dev/ItemsView/ItemsView.cpp +++ b/controls/dev/ItemsView/ItemsView.cpp @@ -18,6 +18,9 @@ #include "ItemContainer.h" #include "ItemContainerRevokers.h" #include "ScrollView.h" +#include "SelectionNode.h" +#include "SelectionModel.h" +#include "SharedHelpers.h" // Change to 'true' to turn on debugging outputs in Output window bool ItemsViewTrace::s_IsDebugOutputEnabled{ false }; @@ -197,6 +200,7 @@ void ItemsView::InvertSelection() #pragma region IControlOverrides +#ifdef DBG void ItemsView::OnGotFocus( winrt::RoutedEventArgs const& args) { @@ -204,6 +208,7 @@ void ItemsView::OnGotFocus( __super::OnGotFocus(args); } +#endif #pragma endregion @@ -279,16 +284,41 @@ void ItemsView::OnPropertyChanged(const winrt::DependencyPropertyChangedEventArg // Make sure the default ItemTemplate is used when the ItemsSource is non-null and the ItemTemplate is null. // Prevents ViewManager::GetElementFromElementFactory from setting the ItemsRepeater.ItemTemplate property // which would clear the template-binding between the ItemsView & ItemsRepeater ItemTemplate properties. +// This is not needed though when the ItemsSource points to UIElements instead of data items. In that case, +// ViewManager::GetElementFromElementFactory will not set a default ItemTemplate. It must remain null. void ItemsView::EnsureItemTemplate() { ITEMSVIEW_TRACE_VERBOSE(*this, TRACE_MSG_METH, METH_NAME, this); - if (ItemsSource() != nullptr && ItemTemplate() == nullptr) + if (ItemsSource() == nullptr || ItemTemplate() != nullptr) + { + return; + } + + if (auto const& itemsRepeater = m_itemsRepeater.get()) { - // The default ItemTemplate uses an ItemContainer for its root element since this is an ItemsView requirement for now. - auto const defaultItemTemplate = winrt::XamlReader::Load(L"").as(); + if (auto const& itemsSourceView = itemsRepeater.ItemsSourceView()) + { + const auto itemCount = itemsSourceView.Count(); - ItemTemplate(defaultItemTemplate); + if (itemCount == 0) + { + return; + } + + const auto data = itemsSourceView.GetAt(0); + + if (auto const& dataAsUIElement = data.try_as()) + { + // No need to set a default ItemTemplate with an ItemContainer when the ItemsSource is a list of UIElements. + return; + } + + // The default ItemTemplate uses an ItemContainer for its root element since this is an ItemsView requirement for now. + auto const defaultItemTemplate = winrt::XamlReader::Load(L"").as(); + + ItemTemplate(defaultItemTemplate); + } } } @@ -312,6 +342,7 @@ void ItemsView::UpdateItemsRepeater( m_itemsRepeater.set(itemsRepeater); HookItemsRepeaterEvents(); + HookItemsSourceViewEvents(); } void ItemsView::UpdateScrollView( @@ -431,6 +462,24 @@ void ItemsView::RaiseSelectionChanged() } } +void ItemsView::HookItemsSourceViewEvents() +{ + ITEMSVIEW_TRACE_VERBOSE(*this, TRACE_MSG_METH, METH_NAME, this); + + m_itemsSourceViewChangedRevoker.revoke(); + + if (auto const& itemsRepeater = m_itemsRepeater.get()) + { + if (auto const& itemsSourceView = itemsRepeater.ItemsSourceView()) + { + m_itemsSourceViewChangedRevoker = itemsSourceView.CollectionChanged(winrt::auto_revoke, { this, &ItemsView::OnSourceListChanged }); + + // Make sure the default ItemTemplate is used when the ItemsSource is non-null and the ItemTemplate is null. + EnsureItemTemplate(); + } + } +} + void ItemsView::HookItemsRepeaterEvents() { ITEMSVIEW_TRACE_VERBOSE(*this, TRACE_MSG_METH, METH_NAME, this); @@ -746,9 +795,28 @@ void ItemsView::OnItemsRepeaterElementPrepared( } #endif - winrt::IReference isItemContainerSelected = m_selectionModel.IsSelected(index); + winrt::IReference isSelectionModelSelectedAsNullable = m_selectionModel.IsSelected(index); + bool isSelectionModelSelected = isSelectionModelSelectedAsNullable != nullptr && isSelectionModelSelectedAsNullable.Value(); - itemContainer.IsSelected(isItemContainerSelected != nullptr && isItemContainerSelected.Value()); + if (itemContainer.IsSelected()) + { + // The ItemsSource may be a list of ItemContainers, some of them having IsSelected==True. Account for this situation + // by updating the selection model accordingly. Only selected containers are pushed into the selection model to avoid + // clearing any potential selections already present in that model, which are pushed into the ItemContainers next. + if (!isSelectionModelSelected && SelectionMode() != winrt::ItemsViewSelectionMode::None) + { + // When SelectionMode is None, ItemContainer.IsSelected will be reset below. + // For all other selection modes, simply select the item. + // No need to go through the SingleSelector, MultipleSelector or ExtendedSelector policy. + m_selectionModel.Select(index); + + // Access the new selection status for the same ItemContainer so it can be updated accordingly below. + isSelectionModelSelectedAsNullable = m_selectionModel.IsSelected(index); + isSelectionModelSelected = isSelectionModelSelectedAsNullable != nullptr && isSelectionModelSelectedAsNullable.Value(); + } + } + + itemContainer.IsSelected(isSelectionModelSelected); SetItemsViewItemContainerRevokers(itemContainer); } @@ -847,15 +915,7 @@ void ItemsView::OnItemsRepeaterItemsSourceChanged( { ITEMSVIEW_TRACE_VERBOSE(*this, TRACE_MSG_METH, METH_NAME, this); - m_itemsSourceViewChangedRevoker.revoke(); - - if (auto const& itemsRepeater = m_itemsRepeater.get()) - { - if (auto const& itemsSourceView = itemsRepeater.ItemsSourceView()) - { - m_itemsSourceViewChangedRevoker = itemsSourceView.CollectionChanged(winrt::auto_revoke, { this, &ItemsView::OnSourceListChanged }); - } - } + HookItemsSourceViewEvents(); auto const& itemsSource = ItemsSource(); @@ -1166,9 +1226,6 @@ void ItemsView::OnItemsSourceChanged() m_selectionModel.Source(itemsSource); m_currentElementSelectionModel.Source(itemsSource); } - - // Make sure the default ItemTemplate is used when the ItemsSource is non-null and the ItemTemplate is null. - EnsureItemTemplate(); } void ItemsView::OnVerticalScrollControllerChanged() @@ -1313,6 +1370,42 @@ void ItemsView::OnSelectionModelSelectionChanged( { ITEMSVIEW_TRACE_VERBOSE(*this, TRACE_MSG_METH, METH_NAME, this); + // Unfortunately using an internal hook to see whether this notification orginated from a collection change or not. + const bool selectionInvalidatedDueToCollectionChange = + winrt::get_self(selectionModel)->SelectionInvalidatedDueToCollectionChange(); + + /* + Another option, besides a public API on SelectionModel, would have been to apply the changes + asynchronously like below. But that seems fragile compared to delaying the application until + the synchronous call to ItemsView::OnSourceListChanged that is about to occur. + DispatcherQueue().TryEnqueue( + winrt::DispatcherQueuePriority::Low, + winrt::DispatcherQueueHandler([weakThis{ get_weak() }]() + { + if (auto strongThis = weakThis.get()) + { + strongThis->ApplySelectionModelSelectionChange(); + } + })); + */ + + if (selectionInvalidatedDueToCollectionChange) + { + // Delay the SelectionModel's selection changes until the upcoming ItemsView::OnSourceListChanged + // call because neither m_itemsRepeater's Children nor m_itemsRepeater's ItemsSourceView have been updated yet. + // ApplySelectionModelSelectionChange which uses both is thus delayed, but is still going to be called synchronously. + m_applySelectionChangeOnSourceListChanged = true; + } + else + { + ApplySelectionModelSelectionChange(); + } +} + +void ItemsView::ApplySelectionModelSelectionChange() +{ + ITEMSVIEW_TRACE_VERBOSE(*this, TRACE_MSG_METH, METH_NAME, this); + // Update ItemsView properties SelectedItem(m_selectionModel.SelectedItem()); @@ -1321,6 +1414,13 @@ void ItemsView::OnSelectionModelSelectionChanged( { const auto count = winrt::VisualTreeHelper::GetChildrenCount(itemsRepeater); +#ifdef DBG + if (const auto itemsSourceView = itemsRepeater.ItemsSourceView()) + { + const auto itemsSourceViewCount = itemsSourceView.Count(); + } +#endif + for (int32_t childIndex = 0; childIndex < count; childIndex++) { auto elementAsDO = winrt::VisualTreeHelper::GetChild(itemsRepeater, childIndex); @@ -1383,6 +1483,19 @@ void ItemsView::OnSourceListChanged( const winrt::IInspectable& dataSource, const winrt::NotifyCollectionChangedEventArgs& args) { + if (m_applySelectionChangeOnSourceListChanged) + { + m_applySelectionChangeOnSourceListChanged = false; + + // Finally apply the SelectionModel's changes notified in ItemsView::OnSelectionModelSelectionChanged + // now that both m_itemsRepeater's Children & m_itemsRepeater's ItemsSourceView are up-to-date. + ApplySelectionModelSelectionChange(); + } + + // When the item count goes from 0 to strictly positive, the ItemTemplate property may + // have to be set to a default template which includes an ItemContainer. + EnsureItemTemplate(); + m_keyboardNavigationReferenceResetPending = true; if (const auto itemsRepeater = m_itemsRepeater.get()) @@ -1634,7 +1747,7 @@ int ItemsView::GetItemInternal( if (element != nullptr) { - if (forFocusableItemsOnly && !IsFocusableElement(element)) + if (forFocusableItemsOnly && !SharedHelpers::IsFocusableElement(element)) { continue; } diff --git a/controls/dev/ItemsView/ItemsView.h b/controls/dev/ItemsView/ItemsView.h index 00671db660..04e0c244e0 100644 --- a/controls/dev/ItemsView/ItemsView.h +++ b/controls/dev/ItemsView/ItemsView.h @@ -51,8 +51,10 @@ class ItemsView : #endif #pragma region IControlOverrides +#ifdef DBG void OnGotFocus( winrt::RoutedEventArgs const& args); +#endif void OnKeyDown( winrt::KeyRoutedEventArgs const& args); #pragma endregion @@ -80,6 +82,7 @@ class ItemsView : void RaiseSelectionChanged(); + void HookItemsSourceViewEvents(); void HookItemsRepeaterEvents(); void UnhookItemsRepeaterEvents( bool isForDestructor); @@ -210,6 +213,7 @@ class ItemsView : const winrt::IInspectable& sender, const winrt::RoutedEventArgs& args); + void ApplySelectionModelSelectionChange(); int GetAdjacentFocusableElementByDirection( const winrt::FocusNavigationDirection& focusNavigationDirection, bool hasIndexBasedLayoutOrientation); @@ -296,9 +300,6 @@ class ItemsView : const winrt::VirtualKey& key, bool isRepeatKey); - bool IsFocusableElement( - winrt::UIElement const& element) const; - bool IsLayoutOrientationIndexBased( bool horizontal); @@ -353,6 +354,10 @@ class ItemsView : bool m_setVerticalScrollControllerOnLoaded{ false }; + // Set to True in ItemsView::OnSelectionModelSelectionChanged to delay the application + // of the selection changes until the imminent ItemsView::OnSourceListChanged call. + bool m_applySelectionChangeOnSourceListChanged{ false }; + std::shared_ptr m_selector; winrt::Microsoft::UI::Xaml::Media::CompositionTarget::Rendering_revoker m_renderingRevoker{}; diff --git a/controls/dev/ItemsView/ItemsViewInteractions.cpp b/controls/dev/ItemsView/ItemsViewInteractions.cpp index 6fea4bfaca..bfb82f6b0a 100644 --- a/controls/dev/ItemsView/ItemsViewInteractions.cpp +++ b/controls/dev/ItemsView/ItemsViewInteractions.cpp @@ -10,6 +10,7 @@ #include "ItemsViewTestHooks.h" #include "ItemsViewItemInvokedEventArgs.h" #include "NullSelector.h" +#include "SharedHelpers.h" #include "SingleSelector.h" #include "ItemContainerRevokers.h" @@ -197,7 +198,7 @@ int ItemsView::GetAdjacentFocusableElementByDirection( MUX_ASSERT(element != nullptr); - if (IsFocusableElement(element)) + if (SharedHelpers::IsFocusableElement(element)) { float navigationDirectionDistance = std::numeric_limits::max(); float noneNavigationDirectionDistance = std::numeric_limits::max(); @@ -315,7 +316,7 @@ int ItemsView::GetAdjacentFocusableElementByIndex( MUX_ASSERT(element != nullptr); - if (IsFocusableElement(element)) + if (SharedHelpers::IsFocusableElement(element)) { return itemIndex; } @@ -582,19 +583,6 @@ bool ItemsView::IsCancelingNavigationKey( return false; } -bool ItemsView::IsFocusableElement( - winrt::UIElement const& element) const -{ - if (element.Visibility() == winrt::Visibility::Collapsed) - { - return false; - } - - auto const& control = element.try_as(); - - return control && (control.IsEnabled() || control.AllowFocusWhenDisabled()) && control.IsTabStop(); -} - bool ItemsView::IsLayoutOrientationIndexBased(bool horizontal) { const winrt::IndexBasedLayoutOrientation indexBasedLayoutOrientation = GetLayoutIndexBasedLayoutOrientation(); @@ -663,16 +651,40 @@ void ItemsView::OnItemsViewElementGettingFocus( // Tabbing (direction == FocusNavigationDirection::Next) or Shift-Tabbing (direction == FocusNavigationDirection::Previous) into // the ItemsRepeater while there is no current element. - // Retrieve the focusable index on the top/left corner for Tabbing, or bottom/right corner for Shift-Tabbing. - int cornerFocusableItem = ItemsView::GetCornerFocusableItem(direction == winrt::FocusNavigationDirection::Next /*isForTopLeftItem*/); - MUX_ASSERT(cornerFocusableItem != -1); + int focusableItemIndex{ -1 }; + + // When these conditions are fulfilled, set the selected item as the current one. + // - TabNavigation is Once + // - SelectionMode is Single + // - an item is selected and is focusable + if (TabNavigation() == winrt::KeyboardNavigationMode::Once && + SelectionMode() == winrt::ItemsViewSelectionMode::Single) + { + const auto selectedItem = m_selectionModel.SelectedItem().as(); + + if (selectedItem && SharedHelpers::IsFocusableElement(selectedItem)) + { + winrt::IndexPath selectedItemIndexPath = m_selectionModel.SelectedIndex(); + MUX_ASSERT(selectedItemIndexPath != nullptr && selectedItemIndexPath.GetSize() == 1); + + focusableItemIndex = selectedItemIndexPath.GetAt(0); + MUX_ASSERT(focusableItemIndex != -1); + } + } + + if (focusableItemIndex == -1) + { + // Retrieve the focusable index on the top/left corner for Tabbing, or bottom/right corner for Shift-Tabbing. + focusableItemIndex = ItemsView::GetCornerFocusableItem(direction == winrt::FocusNavigationDirection::Next /*isForTopLeftItem*/); + MUX_ASSERT(focusableItemIndex != -1); + } // Set that index as the current one. - SetCurrentElementIndex(cornerFocusableItem, winrt::FocusState::Unfocused, false /*forceKeyboardNavigationReferenceReset*/); - MUX_ASSERT(cornerFocusableItem == GetCurrentElementIndex()); + SetCurrentElementIndex(focusableItemIndex, winrt::FocusState::Unfocused, false /*forceKeyboardNavigationReferenceReset*/); + MUX_ASSERT(focusableItemIndex == GetCurrentElementIndex()); // Allow TrySetNewFocusedElement to be called below for that new current element. - currentElementIndex = cornerFocusableItem; + currentElementIndex = focusableItemIndex; } } diff --git a/controls/dev/ItemsView/ItemsViewTrace.h b/controls/dev/ItemsView/ItemsViewTrace.h index 5db4211554..c3b2366525 100644 --- a/controls/dev/ItemsView/ItemsViewTrace.h +++ b/controls/dev/ItemsView/ItemsViewTrace.h @@ -4,7 +4,7 @@ #pragma once #include "common.h" -#include "TraceLogging.h" +#include "MuxcTraceLogging.h" #include "Utils.h" #include "MUXControlsTestHooks.h" @@ -87,7 +87,7 @@ class ItemsViewTrace if (includeTraceLogging) { // TraceViewers - // http://toolbox/pef + // http://toolbox/pef // http://fastetw/index.aspx TraceLoggingWrite( g_hLoggingProvider, @@ -123,7 +123,7 @@ class ItemsViewTrace if (includeTraceLogging) { // TraceViewers - // http://toolbox/pef + // http://toolbox/pef // http://fastetw/index.aspx TraceLoggingWrite( g_hLoggingProvider, @@ -152,7 +152,7 @@ class ItemsViewTrace static void TracePerfInfo(PCWSTR info) noexcept { // TraceViewers - // http://toolbox/pef + // http://toolbox/pef // http://fastetw/index.aspx TraceLoggingWrite( g_hPerfProvider, diff --git a/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml b/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml index e03d338862..70e3ae1ce6 100644 --- a/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml +++ b/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml @@ -298,6 +298,8 @@ Small ObservableCollection<Recipe> Small Uniform ObservableCollection<Recipe> ObservableCollection<Recipe> + Small ObservableCollection<ItemContainer> + Small ObservableCollection<Image> diff --git a/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml.cs b/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml.cs index bb94b2b00d..56e5fdc1c2 100644 --- a/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml.cs +++ b/controls/dev/ItemsView/TestUI/ItemsViewSummaryPage.xaml.cs @@ -76,6 +76,8 @@ public QueuedOperation(QueuedOperationType type, string value) private ObservableCollection _colRecipes = null; private ObservableCollection _colSmallRecipes = null; private ObservableCollection _colSmallUniformRecipes = null; + private ObservableCollection _colSmallItemContainers = null; + private ObservableCollection _colSmallImages = null; private List _lstRecipes = null; private DataTemplate[] _recipeTemplates = new DataTemplate[17]; private StackLayout _stackLayout = null; @@ -330,7 +332,9 @@ private void ItemsView_SelectionChanged(ItemsView sender, ItemsViewSelectionChan foreach (var selectedItem in sender.SelectedItems) { - selectedItems += (selectedItem == null) ? ", " : selectedItem.ToString().Substring(0, 9) + ", "; + string selectedItemAsString = selectedItem.ToString(); + + selectedItems += (selectedItem == null) ? ", " : selectedItemAsString.Substring(0, Math.Min(selectedItemAsString.Length, 9)) + ", "; } AppendAsyncEventMessage($"ItemsView.SelectionChanged SelectedItems={selectedItems}"); @@ -1086,6 +1090,14 @@ private void UpdateDataSourceItemCount() { txtDataSourceItemCount.Text = _colRecipes.Count.ToString(); } + else if (_itemsView.ItemsSource == _colSmallItemContainers) + { + txtDataSourceItemCount.Text = _colSmallItemContainers.Count.ToString(); + } + else if (_itemsView.ItemsSource == _colSmallImages) + { + txtDataSourceItemCount.Text = _colSmallImages.Count.ToString(); + } } } @@ -1881,7 +1893,9 @@ private void UpdateSelectedItem() } else { - txtSelectedItem.Text = _itemsView.SelectedItem.ToString().Substring(0, 12); + string selectedItemAsString = _itemsView.SelectedItem.ToString(); + + txtSelectedItem.Text = selectedItemAsString.Substring(0, Math.Min(selectedItemAsString.Length, 12)); } } } @@ -1900,7 +1914,9 @@ private void UpdateSelectedItems() foreach (var selectedItem in _itemsView.SelectedItems) { - txtSelectedItems.Text += (selectedItem == null) ? ", " : selectedItem.ToString().Substring(0, 9) + ", "; + string selectedItemAsString = selectedItem.ToString(); + + txtSelectedItems.Text += (selectedItem == null) ? ", " : selectedItemAsString.Substring(0, Math.Min(selectedItemAsString.Length, 9)) + ", "; } } } @@ -4439,7 +4455,6 @@ private void CmbItemsSource_SelectionChanged(object sender, SelectionChangedEven case 2: if (_colSmallRecipes == null) { - var rnd = new Random(); _colSmallRecipes = new ObservableCollection(); for (int itemIndex = 0; itemIndex < 7; itemIndex++) @@ -4487,6 +4502,34 @@ private void CmbItemsSource_SelectionChanged(object sender, SelectionChangedEven } _itemsView.ItemsSource = _colRecipes; break; + case 5: + if (_colSmallItemContainers == null) + { + _colSmallItemContainers = new ObservableCollection(); + + for (int itemIndex = 0; itemIndex < 7; itemIndex++) + { + ItemContainer itemContainer = GetItemContainerAsItemsSourceItem(itemIndex); + + _colSmallItemContainers.Add(itemContainer); + } + } + _itemsView.ItemsSource = _colSmallItemContainers; + break; + case 6: + if (_colSmallImages == null) + { + _colSmallImages = new ObservableCollection(); + + for (int itemIndex = 0; itemIndex < 7; itemIndex++) + { + Image image = GetImageAsItemsSourceItem(itemIndex); + + _colSmallImages.Add(image); + } + } + _itemsView.ItemsSource = _colSmallImages; + break; } } } @@ -4965,6 +5008,78 @@ private void BtnDataSourceSetItemCount_Click(object sender, RoutedEventArgs e) _itemsView.ItemsSource = _colRecipes; } } + + if (_itemsView.ItemsSource == null || _itemsView.ItemsSource == _colSmallItemContainers) + { + bool setItemsSource = _itemsView.ItemsSource != null && _itemsView.ItemsSource == _colSmallItemContainers; + int currentItemCount = _colSmallItemContainers == null ? 0 : _colSmallItemContainers.Count; + + if (currentItemCount < newItemCount) + { + var colItemContainersEnd = new ObservableCollection(); + + for (int itemIndex = currentItemCount; itemIndex < newItemCount; itemIndex++) + { + ItemContainer itemContainer = GetItemContainerAsItemsSourceItem(itemIndex); + + colItemContainersEnd.Add(itemContainer); + } + + if (currentItemCount == 0) + { + _colSmallItemContainers = colItemContainersEnd; + } + else + { + _colSmallItemContainers = new ObservableCollection(_colSmallItemContainers.Concat(colItemContainersEnd)); + } + } + else if (currentItemCount > newItemCount) + { + _colSmallItemContainers = new ObservableCollection(_colSmallItemContainers.Take(newItemCount)); + } + + if (setItemsSource) + { + _itemsView.ItemsSource = _colSmallItemContainers; + } + } + + if (_itemsView.ItemsSource == null || _itemsView.ItemsSource == _colSmallImages) + { + bool setItemsSource = _itemsView.ItemsSource != null && _itemsView.ItemsSource == _colSmallImages; + int currentItemCount = _colSmallImages == null ? 0 : _colSmallImages.Count; + + if (currentItemCount < newItemCount) + { + var colImagesEnd = new ObservableCollection(); + + for (int itemIndex = currentItemCount; itemIndex < newItemCount; itemIndex++) + { + Image image = GetImageAsItemsSourceItem(itemIndex); + + colImagesEnd.Add(image); + } + + if (currentItemCount == 0) + { + _colSmallImages = colImagesEnd; + } + else + { + _colSmallImages = new ObservableCollection(_colSmallImages.Concat(colImagesEnd)); + } + } + else if (currentItemCount > newItemCount) + { + _colSmallImages = new ObservableCollection(_colSmallImages.Take(newItemCount)); + } + + if (setItemsSource) + { + _itemsView.ItemsSource = _colSmallImages; + } + } } } catch (Exception ex) @@ -5020,6 +5135,28 @@ private void DataSourceAddItem() colRecipes.Add(recipe); } + else + { + ObservableCollection colItemContainers = _itemsView.ItemsSource as ObservableCollection; + + if (colItemContainers != null) + { + ItemContainer itemContainer = GetItemContainerAsItemsSourceItem(colItemContainers.Count); + + colItemContainers.Add(itemContainer); + } + else + { + ObservableCollection colImages = _itemsView.ItemsSource as ObservableCollection; + + if (colImages != null) + { + Image image = GetImageAsItemsSourceItem(colImages.Count); + + colImages.Add(image); + } + } + } } } } @@ -5076,6 +5213,28 @@ private void DataSourceInsertItem(int newItemIndex) colRecipes.Insert(newItemIndex, recipe); } + else + { + ObservableCollection colItemContainers = _itemsView.ItemsSource as ObservableCollection; + + if (colItemContainers != null) + { + ItemContainer itemContainer = GetItemContainerAsItemsSourceItem(colItemContainers.Count); + + colItemContainers.Insert(newItemIndex, itemContainer); + } + else + { + ObservableCollection colImages = _itemsView.ItemsSource as ObservableCollection; + + if (colImages != null) + { + Image image = GetImageAsItemsSourceItem(colImages.Count); + + colImages.Insert(newItemIndex, image); + } + } + } } } } @@ -5108,6 +5267,14 @@ private void DataSourceRemoveAllItems() { _colRecipes.Clear(); } + else if (_itemsView.ItemsSource == _colSmallItemContainers) + { + _colSmallItemContainers.Clear(); + } + else if (_itemsView.ItemsSource == _colSmallImages) + { + _colSmallImages.Clear(); + } } } catch (Exception ex) @@ -5139,6 +5306,14 @@ private void DataSourceRemoveItem(int oldItemIndex) { _colRecipes.RemoveAt(oldItemIndex); } + else if (_itemsView.ItemsSource == _colSmallItemContainers) + { + _colSmallItemContainers.RemoveAt(oldItemIndex); + } + else if (_itemsView.ItemsSource == _colSmallImages) + { + _colSmallImages.RemoveAt(oldItemIndex); + } } } catch (Exception ex) @@ -6168,6 +6343,71 @@ private int GetItemsRepeaterElementIndex(FrameworkElement element) return -1; } + private ItemContainer GetItemContainerAsItemsSourceItem(int itemIndex) + { + Grid grid = new Grid() { + Name = "itemPanel" + }; + + BitmapImage bitmapImage = new BitmapImage() { + DecodePixelHeight = 96, + UriSource = new Uri(string.Format("ms-appx:///Images/Rect{0}.png", itemIndex % 6)) + }; + + Image image = new Image() { + Name = "image", + Stretch = Stretch.UniformToFill, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Source = bitmapImage + }; + + grid.Children.Add(image); + + TextBlock textBlock = new TextBlock() { + Text = itemIndex.ToString(), + TextWrapping = TextWrapping.Wrap, + Margin = new Thickness(4), + Foreground = new SolidColorBrush(Colors.Yellow), + FontSize = 14.0, + MaxWidth = 68.0, + MaxHeight = 48.0, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Bottom + }; + + grid.Children.Add(textBlock); + + ItemContainer itemContainer = new ItemContainer() { + MinWidth = 72.0, + Height = 96.0, + Background = new SolidColorBrush(Colors.Gray), + Child = grid + }; + + return itemContainer; + } + + private Image GetImageAsItemsSourceItem(int itemIndex) + { + BitmapImage bitmapImage = new BitmapImage() { + DecodePixelHeight = 96, + UriSource = new Uri(string.Format("ms-appx:///Images/Rect{0}.png", itemIndex % 6)) + }; + + Image image = new Image() { + Name = "image", + MinWidth = 72.0, + Height = 96.0, + Stretch = Stretch.UniformToFill, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Source = bitmapImage + }; + + return image; + } + private Thickness GetThicknessFromString(string thickness) { string[] lengths = thickness.Split(','); diff --git a/controls/dev/Lightup/Microsoft.UI.Xaml.Controls.Lightup.vcxproj b/controls/dev/Lightup/Microsoft.UI.Xaml.Controls.Lightup.vcxproj new file mode 100644 index 0000000000..a4dc672d99 --- /dev/null +++ b/controls/dev/Lightup/Microsoft.UI.Xaml.Controls.Lightup.vcxproj @@ -0,0 +1,37 @@ + + + + + + true + false + false + {711ec81d-74eb-401f-b397-7431e5f79ede} + Generic + true + Microsoft.UI.Xaml.Controls.Lightup + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + diff --git a/controls/dev/MapControl/APITests/MapControlTests.cs b/controls/dev/MapControl/APITests/MapControlTests.cs new file mode 100644 index 0000000000..a480df66d7 --- /dev/null +++ b/controls/dev/MapControl/APITests/MapControlTests.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using Common; +using System.Collections.Generic; +using Microsoft.UI.Xaml.Controls; +using MUXControlsTestApp.Utilities; + +using WEX.TestExecution; +using WEX.TestExecution.Markup; +using WEX.Logging.Interop; + +namespace Microsoft.UI.Xaml.Tests.MUXControls.ApiTests +{ + + [TestClass] + public class MapControlTests : ApiTestBase + { + + } +} diff --git a/controls/dev/MapControl/APITests/MapControl_APITests.projitems b/controls/dev/MapControl/APITests/MapControl_APITests.projitems new file mode 100644 index 0000000000..324df44daf --- /dev/null +++ b/controls/dev/MapControl/APITests/MapControl_APITests.projitems @@ -0,0 +1,14 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + cb2352e2-d633-41a3-8cdc-b28731a4c490 + + + MapControl_APITests + + + + + diff --git a/controls/dev/MapControl/APITests/MapControl_APITests.shproj b/controls/dev/MapControl/APITests/MapControl_APITests.shproj new file mode 100644 index 0000000000..75b36552db --- /dev/null +++ b/controls/dev/MapControl/APITests/MapControl_APITests.shproj @@ -0,0 +1,13 @@ + + + + {F350D71A-A980-4D63-A38A-8A2035DC4EF2} + 14.0 + + + + + + + + \ No newline at end of file diff --git a/controls/dev/MapControl/InteractionTests/MapControlTests.cs b/controls/dev/MapControl/InteractionTests/MapControlTests.cs new file mode 100644 index 0000000000..83e5f4ed82 --- /dev/null +++ b/controls/dev/MapControl/InteractionTests/MapControlTests.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using Common; +using Microsoft.UI.Xaml.Tests.MUXControls.InteractionTests.Infra; +using Microsoft.UI.Xaml.Tests.MUXControls.InteractionTests.Common; +using System.Collections.Generic; + +using WEX.TestExecution; +using WEX.TestExecution.Markup; +using WEX.Logging.Interop; + +using Microsoft.Windows.Apps.Test.Automation; +using Microsoft.Windows.Apps.Test.Foundation; +using Microsoft.Windows.Apps.Test.Foundation.Controls; +using Microsoft.Windows.Apps.Test.Foundation.Patterns; +using Microsoft.Windows.Apps.Test.Foundation.Waiters; + +namespace Microsoft.UI.Xaml.Tests.MUXControls.InteractionTests +{ + [TestClass] + public class MapControlTests + { + [ClassInitialize] + [TestProperty("RunAs", "User")] + [TestProperty("Classification", "Integration")] + [TestProperty("Platform", "Any")] + [TestProperty("MUXControlsTestSuite", "SuiteB")] + public static void ClassInitialize(TestContext testContext) + { + TestEnvironment.Initialize(testContext); + } + + public void TestCleanup() + { + TestCleanupHelper.Cleanup(); + } + + } +} diff --git a/controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.projitems b/controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.projitems new file mode 100644 index 0000000000..44a18ffbaf --- /dev/null +++ b/controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.projitems @@ -0,0 +1,15 @@ + + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + A1553559-5786-4B44-AB9E-94AB95C86D4D + + + MapControl_InteractionTests + + + + + diff --git a/controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.shproj b/controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.shproj new file mode 100644 index 0000000000..8cd216c7ad --- /dev/null +++ b/controls/dev/MapControl/InteractionTests/MapControl_InteractionTests.shproj @@ -0,0 +1,14 @@ + + + + + {189F0B87-4CA1-4F77-8195-FC6DC714157A} + 15.0 + + + + + + + + \ No newline at end of file diff --git a/controls/dev/MapControl/MapControl.cpp b/controls/dev/MapControl/MapControl.cpp new file mode 100644 index 0000000000..763468cf5f --- /dev/null +++ b/controls/dev/MapControl/MapControl.cpp @@ -0,0 +1,385 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapControl.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" +#include "WebView2.h" +#include +#include +#include +#include +#include "MapElementClickEventArgs.h" +#include "MapControlMapServiceErrorOccurredEventArgs.h" +#include "MapElementsLayer.h" +#include "Vector.h" + + + +winrt::hstring MapControl::s_mapHtmlContent{}; + +MapControl::MapControl() +{ + SetDefaultStyleKey(this); + + // Create layers vector that can hold MapElements to display information and be interacted with on the map + auto layers = winrt::make>().as>(); + layers.VectorChanged({ this, &MapControl::OnLayersVectorChanged }); + SetValue(s_LayersProperty, layers); +} + +void MapControl::OnApplyTemplate() +{ + m_webviewWebMessageReceivedRevoker.revoke(); + m_webviewNavigationCompletedRevoker.revoke(); + + winrt::IControlProtected thisAsControlProtected = *this; + if (auto webview = GetTemplateChildT(L"PART_WebView2", thisAsControlProtected)) + { + m_webView.set(webview); + + m_webviewWebMessageReceivedRevoker = webview.WebMessageReceived(winrt::auto_revoke, { this, &MapControl::WebMessageReceived }); + m_webviewNavigationCompletedRevoker = webview.NavigationCompleted(winrt::auto_revoke,{ + [this](auto const&, winrt::CoreWebView2NavigationCompletedEventArgs const& args) + { + InitializeWebMap(); + }}); + + SetUpWebView(); + } +} + +winrt::IAsyncOperation MapControl::GetCoreWebView2() +{ + if (auto webView = m_webView.get()) + { + co_await webView.EnsureCoreWebView2Async(); + co_return webView.CoreWebView2(); + } + co_return nullptr; +} + +winrt::fire_and_forget MapControl::SetUpWebView() +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + + // azure maps might not be displayed correctly with tracking prevention enabled + core.Profile().PreferredTrackingPreventionLevel(winrt::CoreWebView2TrackingPreventionLevel::None); + webView.NavigateToString(co_await GetMapHtmlContent()); + } +} + +winrt::IAsyncOperation MapControl::InitializeWebMap() +{ + winrt::hstring returnedValue{}; + auto center = Center(); + winrt::hstring pos = L"0,0"; + if (center != nullptr) + { + const auto centerPosition = center.Position(); + pos = std::format(L"{},{}", centerPosition.Longitude, centerPosition.Latitude); + } + auto token = IsValidMapServiceToken() ? MapServiceToken() : L""; + auto parameters = std::format(L"{},\"{}\"", pos, token); + + if (auto webView = m_webView.get()) + { + auto core = webView.CoreWebView2(); + // Initializing Azure Maps on WebView + // params: longitude, latitude, mapServiceToken + returnedValue = co_await core.ExecuteScriptAsync(L"initializeMap(" + parameters + L");"); + + for (uint32_t i = 0; i < Layers().Size(); i++) + { + winrt::MapElementsLayer layer = Layers().GetAt(i).as(); + OnLayerAdded(layer); + } + } + UpdateControlsInWebPage(); + co_return returnedValue; +} + +void MapControl::OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args) +{ + winrt::IDependencyProperty property = args.Property(); + + if (property == s_MapServiceTokenProperty) + { + if (IsValidMapServiceToken()) + { + UpdateMapServiceTokenInWebPage(); + } + } + else if (property == s_CenterProperty) + { + UpdateCenterInWebPage(); + } + else if (property == s_ZoomLevelProperty) + { + UpdateZoomLevelInWebPage(); + } + else if (property == s_InteractiveControlsVisibleProperty) + { + UpdateControlsInWebPage(); + } +} + +bool MapControl::IsValidMapServiceToken() { + return !MapServiceToken().empty() && std::all_of(MapServiceToken().begin(), MapServiceToken().end(), ::isalnum); +} + +// Updates Azure Maps Authentication Key on WebView +winrt::fire_and_forget MapControl::UpdateMapServiceTokenInWebPage() +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + // Sends new token to WebView + // params: mapServiceToken + co_await core.ExecuteScriptAsync(L"updateMapServiceToken(\"" + MapServiceToken() + L"\");"); + + for (uint32_t i = 0; i < Layers().Size(); i++) + { + winrt::MapElementsLayer layer = Layers().GetAt(i).try_as(); + OnLayerAdded(layer); + } + + UpdateControlsInWebPage(); + UpdateCenterInWebPage(); + UpdateZoomLevelInWebPage(); + } +} + +winrt::fire_and_forget MapControl::UpdateCenterInWebPage() +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + + auto newCenter = Center().Position(); + auto pos = std::format(L"{},{}", newCenter.Longitude, newCenter.Latitude); + // Updates center of map in WebView + // params: longitude, latitude + co_await core.ExecuteScriptAsync(L"updateCenter(" + pos + L")"); + } +} + +winrt::fire_and_forget MapControl::UpdateZoomLevelInWebPage() +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + core.ExecuteScriptAsync(L"updateZoom(" + winrt::to_hstring(ZoomLevel()) + L")"); + } +} + +winrt::fire_and_forget MapControl::UpdateControlsInWebPage() +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + core.ExecuteScriptAsync(L"interactiveControlsVisible(" + winrt::to_hstring(InteractiveControlsVisible()) + L")"); + } +} + +void MapControl::WebMessageReceived(winrt::WebView2 sender, winrt::CoreWebView2WebMessageReceivedEventArgs args) +{ + auto jsonAsString = args.WebMessageAsJson(); + if (!jsonAsString.empty()) + { + winrt::Windows::Data::Json::JsonObject obj = winrt::Windows::Data::Json::JsonObject(); + if (winrt::Windows::Data::Json::JsonObject::TryParse(jsonAsString, obj)) + { + auto type = obj.GetNamedObject(L"type"); + // Handles click events on MapElements + if (type.GetString() == L"pushpinClickEvent") + { + auto clickedLayer = Layers().GetAt(static_cast(obj.GetNamedObject(L"layer").GetNumber())).try_as(); + auto location = winrt::Geopoint{ winrt::BasicGeoposition{ + obj.GetNamedObject(L"coordinate").GetNamedValue(L"longitude").GetNumber(), + obj.GetNamedObject(L"coordinate").GetNamedValue(L"latitude").GetNumber() }}; + + auto pointId = obj.GetNamedObject(L"point").GetString(); + winrt::MapElement clickedElement{nullptr}; + auto elements = clickedLayer->MapElements(); + for (uint32_t i = 0; i < elements.Size(); i++) + { + auto elem = elements.GetAt(i); + if (winrt::get_self(elem)->Id == pointId) + { + clickedElement = elem.try_as(); + } + } + auto clickArgs = winrt::make_self(location, clickedElement); + m_mapElementClickEventSource(*this, *clickArgs); + + clickedLayer->RaiseMapElementClick(*clickArgs); + } + // Raises error events from WebView + else if (type.GetString() == L"javascriptError") + { + auto errorArgs = winrt::make_self(jsonAsString); + m_mapServiceErrorOccurredEventSource(*this, *errorArgs); + } + } + } +} + +winrt::fire_and_forget MapControl::ClearLayer(winrt::hstring layerId) +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + co_await core.ExecuteScriptAsync(L"clearLayer(" + layerId + L");"); + } +} + +winrt::fire_and_forget MapControl::ResetLayerCollection() +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + + for (uint32_t i = 0; i < Layers().Size(); i++) + { + winrt::MapElementsLayer layer = Layers().GetAt(i).as(); + auto layerId = winrt::get_self(layer)->Id; + co_await core.ExecuteScriptAsync(L"clearLayer(" + winrt::to_hstring(layerId) + L");"); + + auto elements = layer.MapElements(); + for (uint32_t j = 0; j < elements.Size(); j++) + { + auto element = elements.GetAt(j); + auto location = element.as().Location(); + winrt::get_self(element)->Id = co_await AddMapIcon(location, layerId); + } + } + } +} + +void MapControl::OnLayersVectorChanged(const winrt::IObservableVector&, const winrt::Collections::IVectorChangedEventArgs& args) +{ + if (args.CollectionChange() == winrt::Collections::CollectionChange::ItemInserted) + { + if (winrt::MapElementsLayer elementLayer = Layers().GetAt(args.Index()).try_as()) + { + OnLayerAdded(elementLayer); + } + } + else if (args.CollectionChange() == winrt::Collections::CollectionChange::ItemRemoved) + { + + if (winrt::MapElementsLayer elementLayer = Layers().GetAt(args.Index()).try_as()) + { + auto layerId = winrt::get_self(elementLayer)->Id; + ClearLayer(layerId); + } + } + else if (args.CollectionChange() == winrt::Collections::CollectionChange::Reset) + { + ResetLayerCollection(); + } +} + +winrt::fire_and_forget MapControl::OnLayerAdded(const winrt::MapElementsLayer layer) +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + auto layerId = winrt::get_self(layer)->Id; + winrt::get_self(layer)->Id = co_await core.ExecuteScriptAsync(L"addSymbolLayer();"); + + auto elements = layer.MapElements(); + for (uint32_t i = 0; i < elements.Size(); i++) + { + auto element = elements.GetAt(i); + auto location = element.as().Location(); + winrt::get_self(element)->Id = co_await AddMapIcon(location, winrt::get_self(layer)->Id); + } + } +} + +winrt::IAsyncOperation MapControl::AddMapIcon(winrt::Geopoint mapIconPoint, winrt::hstring layerId) +{ + winrt::hstring returnedValue{}; + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + + const auto mapIconPosition = mapIconPoint.Position(); + const auto latitude = winrt::to_hstring(mapIconPosition.Latitude); + const auto longitude = winrt::to_hstring(mapIconPosition.Longitude); + + returnedValue = co_await core.ExecuteScriptAsync(L"addPoint(" + longitude + L", " + latitude + L"," + layerId + L");"); + } + co_return returnedValue; +} + +winrt::fire_and_forget MapControl::RemoveMapIcon(winrt::hstring pointId, winrt::hstring layerId) +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + + auto result = co_await core.ExecuteScriptAsync(L"removePoint(" + pointId + L"," + layerId + L");"); + } +} + +winrt::fire_and_forget MapControl::UpdateMapIcon(winrt::Geopoint mapIconPoint, winrt::hstring pointId, winrt::hstring layerId) +{ + if (auto webView = m_webView.get()) + { + auto core = co_await GetCoreWebView2(); + + const auto mapIconPosition = mapIconPoint.Position(); + const auto latitude = winrt::to_hstring(mapIconPosition.Latitude); + const auto longitude = winrt::to_hstring(mapIconPosition.Longitude); + + co_await core.ExecuteScriptAsync(L"updatePoint(" + longitude + L", " + latitude + L"," + pointId + L"," + layerId + L");"); + } +} + +winrt::fire_and_forget MapControl::LayerElementsChanged(const winrt::MapElementsLayer& layer, const winrt::IObservableVector& elements, const winrt::Collections::IVectorChangedEventArgs& args, winrt::hstring elementId) +{ + const auto index = args.Index(); + auto layerId = winrt::get_self(layer)->Id; + + switch (args.CollectionChange()) + { + case winrt::Collections::CollectionChange::ItemInserted: + { + auto element = elements.GetAt(index); + winrt::get_self(element)->Id = co_await AddMapIcon(element.as().Location(), layerId); + break; + } + case winrt::Collections::CollectionChange::ItemRemoved: + RemoveMapIcon(elementId, layerId); + break; + case winrt::Collections::CollectionChange::ItemChanged: + { + auto element = elements.GetAt(index); + RemoveMapIcon(elementId, layerId); + winrt::get_self(element)->Id = co_await AddMapIcon(element.as().Location(), layerId); + break; + } + case winrt::Collections::CollectionChange::Reset: + { + OnLayerAdded(layer); + break; + } + } +} + +winrt::IAsyncOperation MapControl::GetMapHtmlContent() +{ + if (s_mapHtmlContent.size() == 0) + { + s_mapHtmlContent = co_await ResourceAccessor::GetFileContents(FR_Map_Html); + } + + co_return s_mapHtmlContent; +} \ No newline at end of file diff --git a/controls/dev/MapControl/MapControl.h b/controls/dev/MapControl/MapControl.h new file mode 100644 index 0000000000..ac0c9b7ec2 --- /dev/null +++ b/controls/dev/MapControl/MapControl.h @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" +#include "MapControl.g.h" +#include "MapControl.properties.h" +#include "WebView2.h" +#include "MapElementsLayer.h" +#include "winrt/Windows.Foundation.h" +#include + + +class MapControl : + public ReferenceTracker, + public MapControlProperties +{ + +public: + MapControl(); + + void OnApplyTemplate(); + void OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args); + + winrt::fire_and_forget LayerElementsChanged(const winrt::MapElementsLayer& layer, const winrt::IObservableVector& elements, const winrt::Collections::IVectorChangedEventArgs& args, winrt::hstring elementId); + winrt::fire_and_forget MapControl::UpdateMapIcon(winrt::Geopoint mapIconPoint, winrt::hstring pointId, winrt::hstring layerId); + +private: + + tracker_ref m_webView{ this }; + + bool IsValidMapServiceToken(); + winrt::IAsyncOperation InitializeWebMap(); + winrt::fire_and_forget SetUpWebView(); + winrt::fire_and_forget OnLayerAdded(const winrt::MapElementsLayer layer); + winrt::IAsyncOperation AddMapIcon(winrt::Geopoint mapIconPoint, winrt::hstring layerId); + winrt::IAsyncOperation MapControl::GetCoreWebView2(); + winrt::fire_and_forget RemoveMapIcon(winrt::hstring pointId, winrt::hstring layerId); + winrt::fire_and_forget ClearLayer(winrt::hstring layerId); + winrt::fire_and_forget ResetLayerCollection(); + void OnLayersVectorChanged(const winrt::IObservableVector&, const winrt::Collections::IVectorChangedEventArgs& args); + void WebMessageReceived(winrt::WebView2 sender, winrt::CoreWebView2WebMessageReceivedEventArgs args); + + winrt::WebView2::WebMessageReceived_revoker m_webviewWebMessageReceivedRevoker{}; + winrt::WebView2::NavigationCompleted_revoker m_webviewNavigationCompletedRevoker{}; + + winrt::fire_and_forget UpdateMapServiceTokenInWebPage(); + winrt::fire_and_forget UpdateCenterInWebPage(); + winrt::fire_and_forget UpdateZoomLevelInWebPage(); + winrt::fire_and_forget UpdateControlsInWebPage(); + + winrt::event_token m_layersVectorChangedToken{}; + + static winrt::IAsyncOperation GetMapHtmlContent(); + static winrt::hstring s_mapHtmlContent; +}; diff --git a/controls/dev/MapControl/MapControl.idl b/controls/dev/MapControl/MapControl.idl new file mode 100644 index 0000000000..16dd37846e --- /dev/null +++ b/controls/dev/MapControl/MapControl.idl @@ -0,0 +1,83 @@ +namespace MU_XC_NAMESPACE +{ + +[MUX_PUBLIC_V6] +[webhosthidden] +[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)] +[MUX_PROPERTY_CHANGED_CALLBACK_METHODNAME("OnPropertyChanged")] +unsealed runtimeclass MapControl : Microsoft.UI.Xaml.Controls.Control +{ + MapControl(); + + String MapServiceToken{ get;set; }; + Windows.Devices.Geolocation.Geopoint Center{ get;set; }; + Windows.Foundation.Collections.IVector Layers{ get;set; }; + Double ZoomLevel{ get;set; }; + Boolean InteractiveControlsVisible{ get;set; }; + + static Microsoft.UI.Xaml.DependencyProperty LayersProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty MapServiceTokenProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty CenterProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty ZoomLevelProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty InteractiveControlsVisibleProperty{ get; }; + + event Windows.Foundation.TypedEventHandler MapElementClick; + event Windows.Foundation.TypedEventHandler MapServiceErrorOccurred; +} + +[MUX_PUBLIC_V6] +[webhosthidden] +unsealed runtimeclass MapElement : Microsoft.UI.Xaml.DependencyObject +{ +} + +[MUX_PUBLIC_V6] +[webhosthidden] +[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)] +[MUX_PROPERTY_CHANGED_CALLBACK_METHODNAME("OnPropertyChanged")] +unsealed runtimeclass MapIcon : Microsoft.UI.Xaml.Controls.MapElement +{ + MapIcon(); + Windows.Devices.Geolocation.Geopoint Location{ get;set; }; + + static Microsoft.UI.Xaml.DependencyProperty LocationProperty{ get; }; +} + +[MUX_PUBLIC_V6] +[webhosthidden] +[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)] +[MUX_PROPERTY_CHANGED_CALLBACK_METHODNAME("OnPropertyChanged")] +unsealed runtimeclass MapLayer : Microsoft.UI.Xaml.DependencyObject +{ +} + +[MUX_PUBLIC_V6] +[webhosthidden] +[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)] +[MUX_PROPERTY_CHANGED_CALLBACK_METHODNAME("OnPropertyChanged")] +unsealed runtimeclass MapElementsLayer : Microsoft.UI.Xaml.Controls.MapLayer +{ + MapElementsLayer(); + + Windows.Foundation.Collections.IVector MapElements{ get;set; }; + static Microsoft.UI.Xaml.DependencyProperty MapElementsProperty{ get; }; + + event Windows.Foundation.TypedEventHandler MapElementClick; +} + +[MUX_PUBLIC_V6] +[webhosthidden] +runtimeclass MapElementClickEventArgs +{ + Windows.Devices.Geolocation.Geopoint Location{ get; }; + MapElement Element{ get; }; +} + +[MUX_PUBLIC_V6] +[webhosthidden] +runtimeclass MapControlMapServiceErrorOccurredEventArgs +{ + String DiagnosticMessage{ get; }; +} + +} \ No newline at end of file diff --git a/controls/dev/MapControl/MapControl.vcxitems b/controls/dev/MapControl/MapControl.vcxitems new file mode 100644 index 0000000000..0372177231 --- /dev/null +++ b/controls/dev/MapControl/MapControl.vcxitems @@ -0,0 +1,53 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {7C60C2AE-6ABC-4762-A0EF-1F50CDD0BA1E} + + + + %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory) + %(PreprocessorDefinitions);MAPCONTROL_INCLUDED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DefaultStyle + + + + + + + + + \ No newline at end of file diff --git a/controls/dev/MapControl/MapControl.xaml b/controls/dev/MapControl/MapControl.xaml new file mode 100644 index 0000000000..9c07f9e7fb --- /dev/null +++ b/controls/dev/MapControl/MapControl.xaml @@ -0,0 +1,21 @@ + + + + + + diff --git a/controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.cpp b/controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.cpp new file mode 100644 index 0000000000..5cc239089d --- /dev/null +++ b/controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.cpp @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapControlMapServiceErrorOccurredEventArgs.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" diff --git a/controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.h b/controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.h new file mode 100644 index 0000000000..fc8b076987 --- /dev/null +++ b/controls/dev/MapControl/MapControlMapServiceErrorOccurredEventArgs.h @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" +#include "MapControlMapServiceErrorOccurredEventArgs.g.h" + + +class MapControlMapServiceErrorOccurredEventArgs : + public winrt::implementation::MapControlMapServiceErrorOccurredEventArgsT +{ +public: + + MapControlMapServiceErrorOccurredEventArgs(winrt::hstring diagnosticMessage) : + m_diagnosticMessage(diagnosticMessage) {}; + + winrt::hstring DiagnosticMessage() { return m_diagnosticMessage; }; + +private: + winrt::hstring m_diagnosticMessage; +}; diff --git a/controls/dev/MapControl/MapElement.cpp b/controls/dev/MapControl/MapElement.cpp new file mode 100644 index 0000000000..17aef8099a --- /dev/null +++ b/controls/dev/MapControl/MapElement.cpp @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapElement.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" + + +MapElement::MapElement() +{ +} \ No newline at end of file diff --git a/controls/dev/MapControl/MapElement.h b/controls/dev/MapControl/MapElement.h new file mode 100644 index 0000000000..e7b2d90add --- /dev/null +++ b/controls/dev/MapControl/MapElement.h @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" + +#include "MapElement.g.h" + +class MapElement : + public winrt::implementation::MapElementT +{ +public: + MapElement(); + winrt::hstring Id; +}; diff --git a/controls/dev/MapControl/MapElementClickEventArgs.cpp b/controls/dev/MapControl/MapElementClickEventArgs.cpp new file mode 100644 index 0000000000..4b130de728 --- /dev/null +++ b/controls/dev/MapControl/MapElementClickEventArgs.cpp @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapElementClickEventArgs.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" diff --git a/controls/dev/MapControl/MapElementClickEventArgs.h b/controls/dev/MapControl/MapElementClickEventArgs.h new file mode 100644 index 0000000000..ba1b1e630a --- /dev/null +++ b/controls/dev/MapControl/MapElementClickEventArgs.h @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" +#include "MapElement.h" +#include "MapElementClickEventArgs.g.h" +#include + + +class MapElementClickEventArgs : + public winrt::implementation::MapElementClickEventArgsT +{ +public: + + MapElementClickEventArgs(winrt::Geopoint location, winrt::MapElement element) : + m_location(location), m_element(element) {}; + + winrt::Geopoint Location() { return m_location; }; + winrt::MapElement Element() { return m_element; }; + +private: + winrt::Geopoint m_location; + winrt::MapElement m_element; +}; diff --git a/controls/dev/MapControl/MapElementsLayer.cpp b/controls/dev/MapControl/MapElementsLayer.cpp new file mode 100644 index 0000000000..aafbaac958 --- /dev/null +++ b/controls/dev/MapControl/MapElementsLayer.cpp @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapElementsLayer.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" +#include "MapElementClickEventArgs.h" +#include "MapControl.h" +#include "Vector.h" +#include "MapElement.h" +#include "MapControl.h" + +MapElementsLayer::MapElementsLayer() +{ + auto elements = winrt::make>(); + auto observableVector = elements.try_as>(); + observableVector.VectorChanged({ this, &MapElementsLayer::OnMapElementsVectorChanged }); + SetValue(s_MapElementsProperty, elements); + + m_elementIds = winrt::make>(); + +} + +void MapElementsLayer::OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args) +{ + winrt::IDependencyProperty property = args.Property(); + +} +void MapElementsLayer::RaiseMapElementClick(MapElementClickEventArgs const& args) +{ + m_mapElementClickEventSource(*this, args); +} + +void MapElementsLayer::OnMapElementsVectorChanged(const winrt::IObservableVector& sender, const winrt::Collections::IVectorChangedEventArgs& args) +{ + const auto index = args.Index(); + auto map = winrt::get_self(SharedHelpers::GetAncestorOfType(winrt::VisualTreeHelper::GetParent(*this))); + if (map) + { + if (index) + { + map->LayerElementsChanged(*this, sender, args, m_elementIds.GetAt(index)); + } + else + { + map->LayerElementsChanged(*this, sender, args, L""); + } + } + + switch (args.CollectionChange()) + { + case winrt::Collections::CollectionChange::ItemInserted: + m_elementIds.Append(winrt::get_self(sender.GetAt(index))->Id); + break; + case winrt::Collections::CollectionChange::ItemRemoved: + m_elementIds.RemoveAt(index); + break; + case winrt::Collections::CollectionChange::ItemChanged: + m_elementIds.SetAt(index, winrt::get_self(sender.GetAt(index))->Id); + break; + case winrt::Collections::CollectionChange::Reset: + { + m_elementIds.Clear(); + for (uint32_t i = 0; i < sender.Size(); i++) + { + auto elementId = winrt::get_self(sender.GetAt(i))->Id; + m_elementIds.Append(elementId); + } + break; + } + } +} \ No newline at end of file diff --git a/controls/dev/MapControl/MapElementsLayer.h b/controls/dev/MapControl/MapElementsLayer.h new file mode 100644 index 0000000000..6476005a27 --- /dev/null +++ b/controls/dev/MapControl/MapElementsLayer.h @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" + +#include "MapElementsLayer.g.h" +#include "MapElementsLayer.properties.h" +#include "MapLayer.h" +#include "MapElementClickEventArgs.h" +#include "MapElement.h" + +class MapElementsLayer : + public ReferenceTracker, + public MapElementsLayerProperties +{ + +public: + MapElementsLayer(); + + winrt::IVector m_elementIds; + + void OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args); + void RaiseMapElementClick(MapElementClickEventArgs const& args); + void OnMapElementsVectorChanged(const winrt::IObservableVector&, const winrt::Collections::IVectorChangedEventArgs& args); +}; diff --git a/controls/dev/MapControl/MapIcon.cpp b/controls/dev/MapControl/MapIcon.cpp new file mode 100644 index 0000000000..89b948e466 --- /dev/null +++ b/controls/dev/MapControl/MapIcon.cpp @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapIcon.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" +#include "MapControl.h" +#include "MapElementsLayer.h" + +MapIcon::MapIcon() +{ +} + +void MapIcon::OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args) +{ + winrt::IDependencyProperty property = args.Property(); + + if (property == s_LocationProperty) + { + auto map = SharedHelpers::GetAncestorOfType(winrt::VisualTreeHelper::GetParent(*this)); + auto layer = SharedHelpers::GetAncestorOfType(winrt::VisualTreeHelper::GetParent(*this)); + if (map && layer) + { + winrt::get_self(map)->UpdateMapIcon(Location(), Id, winrt::get_self(layer)->Id); + } + } +} \ No newline at end of file diff --git a/controls/dev/MapControl/MapIcon.h b/controls/dev/MapControl/MapIcon.h new file mode 100644 index 0000000000..7ad86db9fc --- /dev/null +++ b/controls/dev/MapControl/MapIcon.h @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" + +#include "MapIcon.g.h" +#include "MapIcon.properties.h" +#include "MapElement.h" + +class MapIcon : + public ReferenceTracker, + public MapIconProperties +{ + +public: + MapIcon(); + + + void OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args); +}; diff --git a/controls/dev/MapControl/MapLayer.cpp b/controls/dev/MapControl/MapLayer.cpp new file mode 100644 index 0000000000..c4795f7858 --- /dev/null +++ b/controls/dev/MapControl/MapLayer.cpp @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "MapLayer.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" + +MapLayer::MapLayer() +{ +} \ No newline at end of file diff --git a/controls/dev/MapControl/MapLayer.h b/controls/dev/MapControl/MapLayer.h new file mode 100644 index 0000000000..0ac30f482e --- /dev/null +++ b/controls/dev/MapControl/MapLayer.h @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" + +#include "MapLayer.g.h" + +class MapLayer : + public winrt::implementation::MapLayerT +{ +public: + MapLayer(); + winrt::hstring Id; +}; diff --git a/controls/dev/MapControl/TestUI/MapControlPage.xaml b/controls/dev/MapControl/TestUI/MapControlPage.xaml new file mode 100644 index 0000000000..f9bb92d2a5 --- /dev/null +++ b/controls/dev/MapControl/TestUI/MapControlPage.xaml @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/controls/dev/SelectorBar/TestUI/SelectorBarPage.xaml.cs b/controls/dev/SelectorBar/TestUI/SelectorBarPage.xaml.cs new file mode 100644 index 0000000000..c22d08bd04 --- /dev/null +++ b/controls/dev/SelectorBar/TestUI/SelectorBarPage.xaml.cs @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Common; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Private.Controls; + +using WEX.TestExecution; +using WEX.TestExecution.Markup; +using WEX.Logging.Interop; + +namespace MUXControlsTestApp +{ + [TopLevelTestPage(Name = "SelectorBar")] + public sealed partial class SelectorBarPage : TestPage + { + public SelectorBarPage() + { + LogController.InitializeLogging(); + this.InitializeComponent(); + + navigateToSummary.Click += delegate { Frame.NavigateWithoutAnimation(typeof(SelectorBarSummaryPage), 0); }; + navigateToSample.Click += delegate { Frame.NavigateWithoutAnimation(typeof(SelectorBarSamplePage), 0); }; + } + + private void CmbSelectorBarOutputDebugStringLevel_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (chkSelectorBar != null && chkSelectorBar.IsChecked == true) + { + MUXControlsTestHooks.SetOutputDebugStringLevelForType( + "SelectorBar", + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 1 || cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2, + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2); + } + + if (chkItemsView != null && chkItemsView.IsChecked == true) + { + MUXControlsTestHooks.SetOutputDebugStringLevelForType( + "ItemsView", + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 1 || cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2, + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2); + } + + if (chkItemContainer != null && chkItemContainer.IsChecked == true) + { + MUXControlsTestHooks.SetOutputDebugStringLevelForType( + "ItemContainer", + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 1 || cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2, + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2); + } + + if (chkItemsRepeater != null && chkItemsRepeater.IsChecked == true) + { + MUXControlsTestHooks.SetOutputDebugStringLevelForType( + "ItemsRepeater", + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 1 || cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2, + cmbSelectorBarOutputDebugStringLevel.SelectedIndex == 2); + } + } + } +} diff --git a/controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml b/controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml new file mode 100644 index 0000000000..5e19a09443 --- /dev/null +++ b/controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml.cs b/controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml.cs new file mode 100644 index 0000000000..3191e4abdf --- /dev/null +++ b/controls/dev/SelectorBar/TestUI/SelectorBarSamplePage.xaml.cs @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.UI.Xaml.Controls; +using MUXControlsTestApp.Samples.Model; +using System; +using System.Collections.ObjectModel; + +namespace MUXControlsTestApp +{ + public sealed partial class SelectorBarSamplePage : TestPage + { + private ObservableCollection _colRemotePhotos = null; + private ObservableCollection _colSharedPhotos = null; + private ObservableCollection _colFavoritePhotos = null; + + public SelectorBarSamplePage() + { + this.InitializeComponent(); + + _colRemotePhotos = new ObservableCollection(); + _colSharedPhotos = new ObservableCollection(); + _colFavoritePhotos = new ObservableCollection(); + + int imageCount = 20; + + for (int itemIndex = 0; itemIndex < imageCount; itemIndex++) + { + _colRemotePhotos.Add(new Recipe() + { + ImageUri = new Uri(string.Format("ms-appx:///Images/vette{0}.jpg", itemIndex % 126 + 1)) + }); + _colSharedPhotos.Add(new Recipe() + { + ImageUri = new Uri(string.Format("ms-appx:///Images/vette{0}.jpg", itemIndex % 126 + imageCount + 1)) + }); + _colFavoritePhotos.Add(new Recipe() + { + ImageUri = new Uri(string.Format("ms-appx:///Images/vette{0}.jpg", itemIndex % 126 + 2 * imageCount + 1)) + }); + } + } + + ~SelectorBarSamplePage() + { + } + + private void SelectorBar_SelectionChanged(SelectorBar sender, SelectorBarSelectionChangedEventArgs args) + { + if (sender.SelectedItem == selectorBarItemRemote) + { + photos.ItemsSource = _colRemotePhotos; + } + else if (sender.SelectedItem == selectorBarItemShared) + { + photos.ItemsSource = _colSharedPhotos; + } + else + { + photos.ItemsSource = _colFavoritePhotos; + } + + if (tblSelectedSelectorBarItem != null) + { + tblSelectedSelectorBarItem.Text = sender.SelectedItem == null ? "null" : sender.SelectedItem.Name; + } + } + } +} diff --git a/controls/dev/SelectorBar/TestUI/SelectorBarSummaryPage.xaml b/controls/dev/SelectorBar/TestUI/SelectorBarSummaryPage.xaml new file mode 100644 index 0000000000..7ddcf2543f --- /dev/null +++ b/controls/dev/SelectorBar/TestUI/SelectorBarSummaryPage.xaml @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + +