Repository: PrismLibrary/Prism Branch: master Commit: aa53f9095dd6 Files: 1116 Total size: 3.3 MB Directory structure: gitextract_7apyv37j/ ├── .dependabot/ │ └── config.yml ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.md │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── lock.yml │ ├── repo.md │ ├── stale.yml │ └── workflows/ │ ├── build_avalonia.yml │ ├── build_core.yml │ ├── build_maui.yml │ ├── build_uno.yml │ ├── build_wpf.yml │ ├── ci.yml │ ├── publish-release.yml │ ├── sponsor-actions.yml │ └── start-release.yml ├── .gitignore ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── Clean-Outputs.ps1 ├── CodeCoverage.runsettings ├── Directory.Build.props ├── Directory.Build.targets ├── Directory.Packages.props ├── LICENSE ├── PrismLibrary.sln ├── PrismLibrary_Avalonia.slnf ├── PrismLibrary_Core.slnf ├── PrismLibrary_Maui.slnf ├── PrismLibrary_Uno.slnf ├── PrismLibrary_Wpf.slnf ├── README.md ├── build/ │ └── consolidate-artifacts.ps1 ├── e2e/ │ ├── Avalonia/ │ │ ├── PrismAvaloniaDemo/ │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── App.axaml │ │ │ ├── App.axaml.cs │ │ │ ├── PrismAvaloniaDemo.csproj │ │ │ ├── Program.cs │ │ │ ├── RegionNames.cs │ │ │ ├── Services/ │ │ │ │ ├── INotificationService.cs │ │ │ │ └── NotificationService.cs │ │ │ ├── Styles/ │ │ │ │ └── Icons.axaml │ │ │ ├── ViewModels/ │ │ │ │ ├── DashboardViewModel.cs │ │ │ │ ├── MainWindowViewModel.cs │ │ │ │ ├── SettingsViewModel.cs │ │ │ │ ├── SubSettingsViewModel.cs │ │ │ │ └── ViewModelBase.cs │ │ │ ├── Views/ │ │ │ │ ├── DashboardView.axaml │ │ │ │ ├── DashboardView.axaml.cs │ │ │ │ ├── MainWindow.axaml │ │ │ │ ├── MainWindow.axaml.cs │ │ │ │ ├── SettingsView.axaml │ │ │ │ ├── SettingsView.axaml.cs │ │ │ │ ├── SubSettingsView.axaml │ │ │ │ └── SubSettingsView.axaml.cs │ │ │ ├── app.manifest │ │ │ └── settings.XamlStyler │ │ └── PrismAvaloniaDemo.sln │ ├── Maui/ │ │ ├── Directory.Build.props │ │ ├── Directory.Build.targets │ │ ├── MauiModule/ │ │ │ ├── Dialogs/ │ │ │ │ ├── LoginDialog.xaml │ │ │ │ └── LoginDialog.xaml.cs │ │ │ ├── MauiAppModule.cs │ │ │ ├── MauiModule.csproj │ │ │ ├── ViewModels/ │ │ │ │ ├── BaseServices.cs │ │ │ │ ├── LoginViewModel.cs │ │ │ │ ├── ViewAViewModel.cs │ │ │ │ ├── ViewBViewModel.cs │ │ │ │ ├── ViewCViewModel.cs │ │ │ │ ├── ViewDViewModel.cs │ │ │ │ └── ViewModelBase.cs │ │ │ └── Views/ │ │ │ ├── ViewA.xaml │ │ │ ├── ViewA.xaml.cs │ │ │ ├── ViewB.xaml │ │ │ ├── ViewB.xaml.cs │ │ │ ├── ViewC.xaml │ │ │ ├── ViewC.xaml.cs │ │ │ ├── ViewD.xaml │ │ │ └── ViewD.xaml.cs │ │ ├── MauiRegionsModule/ │ │ │ ├── MauiRegionsModule.csproj │ │ │ ├── MauiTestRegionsModule.cs │ │ │ ├── ViewModels/ │ │ │ │ ├── ContentRegionPageViewModel.cs │ │ │ │ ├── RegionHomeViewModel.cs │ │ │ │ ├── RegionViewAViewModel.cs │ │ │ │ ├── RegionViewBViewModel.cs │ │ │ │ ├── RegionViewCViewModel.cs │ │ │ │ └── RegionViewModelBase.cs │ │ │ └── Views/ │ │ │ ├── ContentRegionPage.xaml │ │ │ ├── ContentRegionPage.xaml.cs │ │ │ ├── DefaultViewInstancePage.xaml │ │ │ ├── DefaultViewInstancePage.xaml.cs │ │ │ ├── DefaultViewNamedPage.xaml │ │ │ ├── DefaultViewNamedPage.xaml.cs │ │ │ ├── DefaultViewTypePage.xaml │ │ │ ├── DefaultViewTypePage.xaml.cs │ │ │ ├── RegionHome.xaml │ │ │ ├── RegionHome.xaml.cs │ │ │ ├── RegionViewA.xaml │ │ │ ├── RegionViewA.xaml.cs │ │ │ ├── RegionViewB.xaml │ │ │ ├── RegionViewB.xaml.cs │ │ │ ├── RegionViewC.xaml │ │ │ └── RegionViewC.xaml.cs │ │ ├── PrismMauiDemo/ │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── MauiProgram.cs │ │ │ ├── Platforms/ │ │ │ │ ├── Android/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── MainActivity.cs │ │ │ │ │ ├── MainApplication.cs │ │ │ │ │ └── Resources/ │ │ │ │ │ └── values/ │ │ │ │ │ └── colors.xml │ │ │ │ ├── MacCatalyst/ │ │ │ │ │ ├── AppDelegate.cs │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── Program.cs │ │ │ │ ├── Windows/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── Package.appxmanifest │ │ │ │ │ └── app.manifest │ │ │ │ └── iOS/ │ │ │ │ ├── AppDelegate.cs │ │ │ │ ├── Info.plist │ │ │ │ ├── Program.cs │ │ │ │ └── Resources/ │ │ │ │ └── LaunchScreen.xib │ │ │ ├── PrismMauiDemo.csproj │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── Resources/ │ │ │ │ ├── Raw/ │ │ │ │ │ └── AboutAssets.txt │ │ │ │ └── Styles/ │ │ │ │ ├── Colors.xaml │ │ │ │ └── Styles.xaml │ │ │ ├── ViewModels/ │ │ │ │ ├── MainPageViewModel.cs │ │ │ │ ├── RootPageViewModel.cs │ │ │ │ └── SplashPageViewModel.cs │ │ │ └── Views/ │ │ │ ├── MainPage.xaml │ │ │ ├── MainPage.xaml.cs │ │ │ ├── RootPage.xaml │ │ │ ├── RootPage.xaml.cs │ │ │ ├── SamplePage.xaml │ │ │ ├── SamplePage.xaml.cs │ │ │ ├── SplashPage.xaml │ │ │ └── SplashPage.xaml.cs │ │ └── PrismMauiDemo.sln │ ├── README.md │ ├── Uno/ │ │ ├── .gitignore │ │ ├── Directory.Build.props │ │ ├── Directory.Build.targets │ │ ├── HelloWorld/ │ │ │ ├── App.cs │ │ │ ├── AppResources.xaml │ │ │ ├── Assets/ │ │ │ │ └── SharedAssets.md │ │ │ ├── GlobalUsings.cs │ │ │ ├── HelloWorld.csproj │ │ │ ├── Strings/ │ │ │ │ └── en/ │ │ │ │ └── Resources.resw │ │ │ ├── Styles/ │ │ │ │ └── ColorPaletteOverride.xaml │ │ │ ├── ViewModels/ │ │ │ │ └── ShellViewModel.cs │ │ │ └── Views/ │ │ │ ├── Shell.xaml │ │ │ └── Shell.xaml.cs │ │ ├── HelloWorld.Mobile/ │ │ │ ├── Android/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── Assets/ │ │ │ │ │ └── AboutAssets.txt │ │ │ │ ├── Main.Android.cs │ │ │ │ ├── MainActivity.Android.cs │ │ │ │ ├── Resources/ │ │ │ │ │ ├── AboutResources.txt │ │ │ │ │ └── values/ │ │ │ │ │ ├── Strings.xml │ │ │ │ │ └── Styles.xml │ │ │ │ └── environment.conf │ │ │ ├── HelloWorld.Mobile.csproj │ │ │ ├── MacCatalyst/ │ │ │ │ ├── Entitlements.plist │ │ │ │ ├── Info.plist │ │ │ │ ├── Main.maccatalyst.cs │ │ │ │ └── Media.xcassets/ │ │ │ │ └── LaunchImages.launchimage/ │ │ │ │ └── Contents.json │ │ │ └── iOS/ │ │ │ ├── Entitlements.plist │ │ │ ├── Info.plist │ │ │ ├── Main.iOS.cs │ │ │ └── Media.xcassets/ │ │ │ └── LaunchImages.launchimage/ │ │ │ └── Contents.json │ │ ├── HelloWorld.Shared/ │ │ │ ├── AppHead.xaml │ │ │ ├── AppHead.xaml.cs │ │ │ ├── HelloWorld.Shared.csproj │ │ │ └── base.props │ │ ├── HelloWorld.Skia.Gtk/ │ │ │ ├── HelloWorld.Skia.Gtk.csproj │ │ │ ├── Package.appxmanifest │ │ │ ├── Program.cs │ │ │ └── app.manifest │ │ ├── HelloWorld.Skia.Linux.FrameBuffer/ │ │ │ ├── HelloWorld.Skia.Linux.FrameBuffer.csproj │ │ │ ├── Program.cs │ │ │ └── app.manifest │ │ ├── HelloWorld.Skia.WPF/ │ │ │ ├── HelloWorld.Skia.WPF.csproj │ │ │ └── Wpf/ │ │ │ ├── App.xaml │ │ │ └── App.xaml.cs │ │ ├── HelloWorld.Wasm/ │ │ │ ├── HelloWorld.Wasm.csproj │ │ │ ├── LinkerConfig.xml │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── WasmCSS/ │ │ │ │ └── Fonts.css │ │ │ ├── WasmScripts/ │ │ │ │ └── AppManifest.js │ │ │ ├── manifest.webmanifest │ │ │ └── wwwroot/ │ │ │ ├── staticwebapp.config.json │ │ │ └── web.config │ │ ├── HelloWorld.Windows/ │ │ │ ├── HelloWorld.Windows.csproj │ │ │ ├── Package.appxmanifest │ │ │ ├── Properties/ │ │ │ │ ├── PublishProfiles/ │ │ │ │ │ ├── win-arm64.pubxml │ │ │ │ │ ├── win-x64.pubxml │ │ │ │ │ └── win-x86.pubxml │ │ │ │ └── launchsettings.json │ │ │ ├── Resources.lang-en-us.resw │ │ │ └── app.manifest │ │ ├── HelloWorld.sln │ │ ├── ModuleA/ │ │ │ ├── Dialogs/ │ │ │ │ ├── AlertDialog.xaml │ │ │ │ ├── AlertDialog.xaml.cs │ │ │ │ └── AlertDialogViewModel.cs │ │ │ ├── GlobalUsings.cs │ │ │ ├── ModuleA.csproj │ │ │ ├── ModuleAModule.cs │ │ │ ├── ViewModels/ │ │ │ │ ├── ViewAViewModel.cs │ │ │ │ ├── ViewBViewModel.cs │ │ │ │ └── ViewModelBase.cs │ │ │ └── Views/ │ │ │ ├── ViewA.xaml │ │ │ ├── ViewA.xaml.cs │ │ │ ├── ViewB.xaml │ │ │ └── ViewB.xaml.cs │ │ └── solution-config.props.sample │ └── Wpf/ │ ├── HelloWorld/ │ │ ├── App.config │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Dialogs/ │ │ │ ├── AnotherDialogWindow.xaml │ │ │ ├── AnotherDialogWindow.xaml.cs │ │ │ ├── ConfirmationDialog.xaml │ │ │ ├── ConfirmationDialog.xaml.cs │ │ │ ├── ConfirmationDialogViewModel.cs │ │ │ ├── CustomDialogWindow.xaml │ │ │ ├── CustomDialogWindow.xaml.cs │ │ │ ├── DialogViewModelBase.cs │ │ │ ├── NotificationDialog.xaml │ │ │ ├── NotificationDialog.xaml.cs │ │ │ └── NotificationDialogViewModel.cs │ │ ├── HelloWorld.csproj │ │ ├── ModuleCatalog.xaml │ │ ├── Properties/ │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── SharedSampleRegistrations.cs │ │ ├── ViewModels/ │ │ │ └── MainWindowViewModel.cs │ │ └── Views/ │ │ ├── MainWindow.xaml │ │ └── MainWindow.xaml.cs │ ├── HelloWorld.Bootstraper/ │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Bootstrapper.cs │ │ └── HelloWorld.Bootstrapper.csproj │ ├── HelloWorld.Core/ │ │ ├── DialogServiceExtensions.cs │ │ └── HelloWorld.Core.csproj │ ├── HelloWorld.sln │ └── Modules/ │ └── HelloWorld.Modules.ModuleA/ │ ├── HelloWorld.Modules.ModuleA.csproj │ ├── ModuleAModule.cs │ ├── ViewModels/ │ │ └── ViewAViewModel.cs │ └── Views/ │ ├── ViewA.xaml │ └── ViewA.xaml.cs ├── global.json ├── prism.snk ├── src/ │ ├── Avalonia/ │ │ ├── Prism.Avalonia/ │ │ │ ├── Common/ │ │ │ │ ├── ObservableObject.cs │ │ │ │ └── Stubs.cs │ │ │ ├── Dialogs/ │ │ │ │ ├── Dialog.cs │ │ │ │ ├── DialogService.cs │ │ │ │ ├── DialogWindow.axaml │ │ │ │ ├── DialogWindow.axaml.cs │ │ │ │ ├── IDialogServiceCompatExtensions.cs │ │ │ │ ├── IDialogWindow.cs │ │ │ │ ├── IDialogWindowExtensions.cs │ │ │ │ └── KnownDialogParameters.cs │ │ │ ├── Extensions/ │ │ │ │ ├── AvaloniaObjectExtensions.cs │ │ │ │ └── ObservableExtensions.cs │ │ │ ├── Interactivity/ │ │ │ │ └── InvokeCommandAction.cs │ │ │ ├── Navigation/ │ │ │ │ └── Regions/ │ │ │ │ ├── Behaviors/ │ │ │ │ │ ├── BindRegionContextToAvaloniaObjectBehavior.cs │ │ │ │ │ └── SelectorItemsSourceSyncBehavior.cs │ │ │ │ └── ItemMetadata.cs │ │ │ ├── Prism.Avalonia.csproj │ │ │ ├── PrismApplicationBase.cs │ │ │ ├── PrismBootstrapperBase.cs │ │ │ └── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── Prism.DryIoc.Avalonia/ │ │ │ ├── Prism.DryIoc.Avalonia.csproj │ │ │ ├── Properties/ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ ├── Resources.Designer.cs │ │ │ │ └── Resources.resx │ │ │ └── build/ │ │ │ └── Package.targets │ │ └── ReadMe.md │ ├── Directory.Build.props │ ├── Directory.Build.targets │ ├── Maui/ │ │ ├── Prism.DryIoc.Maui/ │ │ │ ├── Prism.DryIoc.Maui.csproj │ │ │ └── PrismAppExtensions.cs │ │ ├── Prism.Maui/ │ │ │ ├── AppModel/ │ │ │ │ ├── FlowDirection.cs │ │ │ │ ├── IApplicationLifecycleAware.cs │ │ │ │ ├── IKeyboardMapper.cs │ │ │ │ ├── IPageLifecycleAware.cs │ │ │ │ ├── KeyboardMapper.cs │ │ │ │ └── KeyboardType.cs │ │ │ ├── Behaviors/ │ │ │ │ ├── BehaviorBase{T}.cs │ │ │ │ ├── DelegatePageBehaviorFactory.cs │ │ │ │ ├── ElementParentedCallbackBehavior.cs │ │ │ │ ├── EventToCommandBehavior.cs │ │ │ │ ├── IPageBehaviorFactory.cs │ │ │ │ ├── MultiPageActiveAwareBehavior.cs │ │ │ │ ├── NavigationPageActiveAwareBehavior.cs │ │ │ │ ├── NavigationPageSystemGoBackBehavior.cs │ │ │ │ ├── NavigationPageTabbedParentBehavior.cs │ │ │ │ ├── PageLifeCycleAwareBehavior.cs │ │ │ │ ├── PageScopeBehavior.cs │ │ │ │ ├── RegionCleanupBehavior.cs │ │ │ │ └── TabbedPageActiveAwareBehavior.cs │ │ │ ├── Common/ │ │ │ │ ├── IPageAccessor.cs │ │ │ │ ├── MvvmHelpers.cs │ │ │ │ ├── ObservableObject.cs │ │ │ │ └── PageAccessor.cs │ │ │ ├── Controls/ │ │ │ │ └── PrismNavigationPage.cs │ │ │ ├── Dialogs/ │ │ │ │ ├── DialogContainerPage.cs │ │ │ │ ├── DialogContainerView.cs │ │ │ │ ├── DialogService.cs │ │ │ │ ├── DialogServiceBase.cs │ │ │ │ ├── DialogViewRegistry.cs │ │ │ │ ├── IDialogContainer.cs │ │ │ │ ├── IDialogViewRegistry.cs │ │ │ │ ├── KnownDialogParameters.cs │ │ │ │ ├── RelativeContentSizeConverter.cs │ │ │ │ ├── SingletonDialogService.cs │ │ │ │ └── Xaml/ │ │ │ │ ├── DialogLayout.cs │ │ │ │ └── ShowDialogExtension.cs │ │ │ ├── Events/ │ │ │ │ └── NavigationRequestEvent.cs │ │ │ ├── Extensions/ │ │ │ │ ├── CollectionExtensions.cs │ │ │ │ └── VisualElementExtensions.cs │ │ │ ├── Ioc/ │ │ │ │ ├── BehaviorFactoryRegistrationExtensions.cs │ │ │ │ ├── ContainerProvider.cs │ │ │ │ ├── DialogRegistrationExtensions.cs │ │ │ │ ├── MicrosoftDependencyInjectionExtensions.cs │ │ │ │ ├── NavigationRegistrationExtensions.cs │ │ │ │ └── RegionNavigationRegistrationExtensions.cs │ │ │ ├── Modularity/ │ │ │ │ ├── IModuleCatalogExtensions.cs │ │ │ │ ├── ModuleCatalog.cs │ │ │ │ ├── ModuleInfo.cs │ │ │ │ ├── ModuleInitializer.cs │ │ │ │ └── ModuleManager.cs │ │ │ ├── Mvvm/ │ │ │ │ ├── ViewModelLocator.cs │ │ │ │ ├── ViewModelLocatorBehavior.cs │ │ │ │ └── ViewRegistryBase.cs │ │ │ ├── Navigation/ │ │ │ │ ├── Builder/ │ │ │ │ │ ├── CreateTabBuilder.cs │ │ │ │ │ ├── IConfigurableSegmentName.cs │ │ │ │ │ ├── ICreateTabBuilder.cs │ │ │ │ │ ├── INavigationBuilder.cs │ │ │ │ │ ├── ISegmentBuilder.cs │ │ │ │ │ ├── ITabbedNavigationBuilder.cs │ │ │ │ │ ├── ITabbedSegmentBuilder.cs │ │ │ │ │ ├── IUriSegment.cs │ │ │ │ │ ├── NavigationBuilder.cs │ │ │ │ │ ├── NavigationBuilderExtensions.cs │ │ │ │ │ ├── SegmentBuilder.cs │ │ │ │ │ └── TabbedSegmentBuilder.cs │ │ │ │ ├── IConfirmNavigation.cs │ │ │ │ ├── IConfirmNavigationAsync.cs │ │ │ │ ├── IFlyoutPageOptions.cs │ │ │ │ ├── IInitialize.cs │ │ │ │ ├── IInitializeAsync.cs │ │ │ │ ├── INavigatedAware.cs │ │ │ │ ├── INavigationAware.cs │ │ │ │ ├── INavigationPageOptions.cs │ │ │ │ ├── INavigationRegistry.cs │ │ │ │ ├── INavigationService.cs │ │ │ │ ├── INavigationServiceExtensions.cs │ │ │ │ ├── IWindowManager.cs │ │ │ │ ├── IWindowManagerExtensions.cs │ │ │ │ ├── Internals/ │ │ │ │ │ └── ChildRegionCollection.cs │ │ │ │ ├── KnownInternalParameters.cs │ │ │ │ ├── KnownNavigationParameters.cs │ │ │ │ ├── NavigationMode.cs │ │ │ │ ├── NavigationParametersExtensions.cs │ │ │ │ ├── NavigationRegistry.cs │ │ │ │ ├── NavigationRequestContext.cs │ │ │ │ ├── NavigationRequestType.cs │ │ │ │ ├── PageNavigationService.cs │ │ │ │ ├── PageNavigationSource.cs │ │ │ │ ├── PrismWindow.cs │ │ │ │ ├── PrismWindowManager.cs │ │ │ │ ├── Regions/ │ │ │ │ │ ├── Adapters/ │ │ │ │ │ │ ├── CarouselViewRegionAdapter.cs │ │ │ │ │ │ ├── CollectionViewRegionAdapter.cs │ │ │ │ │ │ ├── ContentViewRegionAdapter.cs │ │ │ │ │ │ ├── ContentViewRegionAdapter{TContentView}.cs │ │ │ │ │ │ ├── LayoutRegionAdapter.cs │ │ │ │ │ │ ├── LayoutViewRegionAdapter.cs │ │ │ │ │ │ ├── RegionAdapterBase.cs │ │ │ │ │ │ ├── RegionAdapterMappings.cs │ │ │ │ │ │ ├── RegionItemsSourceTemplate.cs │ │ │ │ │ │ └── ScrollViewRegionAdapter.cs │ │ │ │ │ ├── AllActiveRegion.cs │ │ │ │ │ ├── Behaviors/ │ │ │ │ │ │ ├── AutoPopulateRegionBehavior.cs │ │ │ │ │ │ ├── BindRegionContextToVisualElementBehavior.cs │ │ │ │ │ │ ├── ClearChildViewsRegionBehavior.cs │ │ │ │ │ │ ├── DelayedRegionCreationBehavior.cs │ │ │ │ │ │ ├── DestructibleRegionBehavior.cs │ │ │ │ │ │ ├── IHostAwareRegionBehavior.cs │ │ │ │ │ │ ├── RegionActiveAwareBehavior.cs │ │ │ │ │ │ ├── RegionCreationException.cs │ │ │ │ │ │ ├── RegionManagerRegistrationBehavior.cs │ │ │ │ │ │ ├── RegionMemberLifetimeBehavior.cs │ │ │ │ │ │ └── SyncRegionContextWithHostBehavior.cs │ │ │ │ │ ├── DefaultRegionManagerAccessor.cs │ │ │ │ │ ├── IRegionManagerAccessor.cs │ │ │ │ │ ├── ITargetAwareRegion.cs │ │ │ │ │ ├── ItemMetadata.cs │ │ │ │ │ ├── Navigation/ │ │ │ │ │ │ ├── RegionNavigationContentLoader.cs │ │ │ │ │ │ └── RegionNavigationService.cs │ │ │ │ │ ├── Region.cs │ │ │ │ │ ├── RegionCollection.cs │ │ │ │ │ ├── RegionContext.cs │ │ │ │ │ ├── RegionExtensions.cs │ │ │ │ │ ├── RegionManager.cs │ │ │ │ │ ├── RegionNavigationRegistry.cs │ │ │ │ │ ├── RegionViewRegistry.cs │ │ │ │ │ ├── SingleActiveRegion.cs │ │ │ │ │ ├── ViewsCollection.cs │ │ │ │ │ └── Xaml/ │ │ │ │ │ └── RegionManager.cs │ │ │ │ └── Xaml/ │ │ │ │ ├── GoBackExtension.cs │ │ │ │ ├── GoBackType.cs │ │ │ │ ├── NavigateToExtension.cs │ │ │ │ ├── Navigation.cs │ │ │ │ ├── NavigationExtensionBase.cs │ │ │ │ ├── TabBindingSource.cs │ │ │ │ └── TabbedPage.cs │ │ │ ├── Prism.Maui.csproj │ │ │ ├── PrismAppBuilder.cs │ │ │ ├── PrismAppBuilderExtensions.cs │ │ │ ├── PrismInitializationException.cs │ │ │ ├── PrismInitializationService.cs │ │ │ ├── Properties/ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ ├── Resources.Designer.cs │ │ │ │ └── Resources.resx │ │ │ ├── Services/ │ │ │ │ └── PageDialogs/ │ │ │ │ ├── ActionSheetButton.cs │ │ │ │ ├── ActionSheetButtonBase.cs │ │ │ │ ├── ActionSheetButton{T}.cs │ │ │ │ ├── IActionSheetButton.cs │ │ │ │ ├── IPageDialogService.cs │ │ │ │ └── PageDialogService.cs │ │ │ ├── Xaml/ │ │ │ │ ├── DynamicTab.cs │ │ │ │ ├── Parameter.cs │ │ │ │ ├── ParameterExtension.cs │ │ │ │ ├── ParameterExtensions.cs │ │ │ │ ├── Parameters.cs │ │ │ │ ├── TargetAwareExtensionBase.cs │ │ │ │ └── TargetBindingContext.cs │ │ │ └── build/ │ │ │ └── Package.targets │ │ └── Prism.Maui.Rx/ │ │ ├── GlobalNavigationObserver.cs │ │ ├── IGlobalNavigationObserver.cs │ │ ├── NavigationObserverRegistrationExtensions.cs │ │ └── Prism.Maui.Rx.csproj │ ├── Prism.Core/ │ │ ├── Commands/ │ │ │ ├── AsyncDelegateCommand.cs │ │ │ ├── AsyncDelegateCommand{T}.cs │ │ │ ├── CompositeCommand.cs │ │ │ ├── DelegateCommand.cs │ │ │ ├── DelegateCommandBase.cs │ │ │ ├── DelegateCommand{T}.cs │ │ │ ├── IAsyncCommand.cs │ │ │ ├── PropertyObserver.cs │ │ │ └── PropertyObserverNode.cs │ │ ├── Common/ │ │ │ ├── IParameters.cs │ │ │ ├── IRegistryAware.cs │ │ │ ├── ListDictionary.cs │ │ │ ├── MulticastExceptionHandler.cs │ │ │ ├── ParametersBase.cs │ │ │ ├── ParametersExtensions.cs │ │ │ └── UriParsingHelper.cs │ │ ├── Dialogs/ │ │ │ ├── ButtonResult.cs │ │ │ ├── DialogCallback.cs │ │ │ ├── DialogCloseListener.cs │ │ │ ├── DialogException.cs │ │ │ ├── DialogParameters.cs │ │ │ ├── DialogResult.cs │ │ │ ├── DialogUtilities.cs │ │ │ ├── IDialogAware.cs │ │ │ ├── IDialogParameters.cs │ │ │ ├── IDialogResult.cs │ │ │ ├── IDialogService.cs │ │ │ └── IDialogServiceExtensions.cs │ │ ├── Extensions/ │ │ │ ├── TaskExtensions.cs │ │ │ └── TaskExtensions{T}.cs │ │ ├── GlobalSuppressions.cs │ │ ├── IActiveAware.cs │ │ ├── Modularity/ │ │ │ ├── CyclicDependencyFoundException.Desktop.cs │ │ │ ├── CyclicDependencyFoundException.cs │ │ │ ├── DuplicateModuleException.Desktop.cs │ │ │ ├── DuplicateModuleException.cs │ │ │ ├── IModule.cs │ │ │ ├── IModuleCatalog.cs │ │ │ ├── IModuleCatalogCoreExtensions.cs │ │ │ ├── IModuleCatalogItem.cs │ │ │ ├── IModuleInfo.cs │ │ │ ├── IModuleInfoGroup.cs │ │ │ ├── IModuleInitializer.cs │ │ │ ├── IModuleManager.cs │ │ │ ├── IModuleManagerExtensions.cs │ │ │ ├── InitializationMode.cs │ │ │ ├── LoadModuleCompletedEventArgs.cs │ │ │ ├── ModularityException.Desktop.cs │ │ │ ├── ModularityException.cs │ │ │ ├── ModuleCatalogBase.cs │ │ │ ├── ModuleDependencyAttribute.cs │ │ │ ├── ModuleDependencySolver.cs │ │ │ ├── ModuleDownloadProgressChangedEventArgs.cs │ │ │ ├── ModuleInitializeException.Desktop.cs │ │ │ ├── ModuleInitializeException.cs │ │ │ ├── ModuleNotFoundException.Desktop.cs │ │ │ ├── ModuleNotFoundException.cs │ │ │ ├── ModuleState.cs │ │ │ ├── ModuleTypeLoadingException.Desktop.cs │ │ │ └── ModuleTypeLoadingException.cs │ │ ├── Mvvm/ │ │ │ ├── BindableBase.cs │ │ │ ├── ErrorsContainer.cs │ │ │ ├── IViewRegistry.cs │ │ │ ├── PropertySupport.cs │ │ │ ├── ViewCreationException.cs │ │ │ ├── ViewModelCreationException.cs │ │ │ ├── ViewModelLocationProvider.cs │ │ │ ├── ViewRegistration.cs │ │ │ ├── ViewRegistryBase{TBaseView}.cs │ │ │ └── ViewType.cs │ │ ├── Navigation/ │ │ │ ├── IDestructible.cs │ │ │ ├── INavigationParameters.cs │ │ │ ├── INavigationParametersInternal.cs │ │ │ ├── INavigationResult.cs │ │ │ ├── NavigationException.cs │ │ │ ├── NavigationParameters.cs │ │ │ ├── NavigationResult.cs │ │ │ └── Regions/ │ │ │ ├── IConfirmNavigationRequest.cs │ │ │ ├── IJournalAware.cs │ │ │ ├── INavigateAsync.cs │ │ │ ├── IRegion.cs │ │ │ ├── IRegionAdapter.cs │ │ │ ├── IRegionAware.cs │ │ │ ├── IRegionBehavior.cs │ │ │ ├── IRegionBehaviorCollection.cs │ │ │ ├── IRegionBehaviorFactory.cs │ │ │ ├── IRegionBehaviorFactoryExtensions.cs │ │ │ ├── IRegionCollection.cs │ │ │ ├── IRegionManager.cs │ │ │ ├── IRegionManagerExtensions.cs │ │ │ ├── IRegionMemberLifetime.cs │ │ │ ├── IRegionNavigationContentLoader.cs │ │ │ ├── IRegionNavigationJournal.cs │ │ │ ├── IRegionNavigationJournalEntry.cs │ │ │ ├── IRegionNavigationRegistry.cs │ │ │ ├── IRegionNavigationService.cs │ │ │ ├── IRegionViewRegistry.cs │ │ │ ├── IViewsCollection.cs │ │ │ ├── NavigationAsyncExtensions.cs │ │ │ ├── NavigationContext.cs │ │ │ ├── NavigationContextExtensions.cs │ │ │ ├── RegionBehavior.cs │ │ │ ├── RegionBehaviorCollection.cs │ │ │ ├── RegionBehaviorFactory.cs │ │ │ ├── RegionCreationException.cs │ │ │ ├── RegionException.cs │ │ │ ├── RegionMemberLifetimeAttribute.cs │ │ │ ├── RegionNavigationEventArgs.cs │ │ │ ├── RegionNavigationFailedEventArgs.cs │ │ │ ├── RegionNavigationJournal.cs │ │ │ ├── RegionNavigationJournalEntry.cs │ │ │ ├── RegionViewException.cs │ │ │ ├── RegionViewRegistryExtensions.cs │ │ │ ├── SyncActiveStateAttribute.cs │ │ │ ├── UpdateRegionsException.cs │ │ │ ├── ViewRegisteredEventArgs.cs │ │ │ ├── ViewRegistrationException.cs │ │ │ └── ViewSortHintAttribute.cs │ │ ├── Prism.Core.csproj │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ └── build/ │ │ └── Package.targets │ ├── Prism.Events/ │ │ ├── BackgroundEventSubscription.cs │ │ ├── DataEventArgs.cs │ │ ├── DelegateReference.cs │ │ ├── DispatcherEventSubscription.cs │ │ ├── EventAggregator.cs │ │ ├── EventBase.cs │ │ ├── EventSubscription.cs │ │ ├── IDelegateReference.cs │ │ ├── IEventAggregator.cs │ │ ├── IEventSubscription.cs │ │ ├── Prism.Events.csproj │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ ├── PubSubEvent.cs │ │ ├── SubscriptionToken.cs │ │ ├── ThreadOption.cs │ │ ├── WeakDelegatesManager.cs │ │ └── build/ │ │ └── Package.targets │ ├── ReadMe.md │ ├── Uno/ │ │ ├── Prism.DryIoc.Uno/ │ │ │ ├── LinkerDefinition.mono.xml │ │ │ ├── Prism.DryIoc.Uno.WinUI.csproj │ │ │ └── build/ │ │ │ └── Package.targets │ │ ├── Prism.Uno/ │ │ │ ├── Common/ │ │ │ │ ├── BindingOperations.cs │ │ │ │ └── DesignerProperties.cs │ │ │ ├── Dialogs/ │ │ │ │ ├── DialogService.cs │ │ │ │ ├── DialogWindow.xaml │ │ │ │ ├── DialogWindow.xaml.cs │ │ │ │ └── IDialogWindow.cs │ │ │ ├── Extensions/ │ │ │ │ └── DependencyObjectExtensions.Uno.cs │ │ │ ├── ILoadableShell.cs │ │ │ ├── Interactivity/ │ │ │ │ └── InvokeCommandAction.cs │ │ │ ├── LinkerDefinition.mono.xml │ │ │ ├── Mvvm/ │ │ │ │ └── ViewModelLocator.cs │ │ │ ├── Navigation/ │ │ │ │ └── Regions/ │ │ │ │ └── NavigationViewRegionAdapter.cs │ │ │ ├── Prism.Uno.WinUI.csproj │ │ │ ├── PrismApplicationBase.cs │ │ │ └── Properties/ │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ └── Prism.Uno.Markup/ │ │ ├── AssemblyInfo.cs │ │ └── Prism.Uno.WinUI.Markup.csproj │ ├── Wpf/ │ │ ├── Prism.DryIoc.Wpf/ │ │ │ ├── GlobalSuppressions.cs │ │ │ ├── Prism.DryIoc.Wpf.csproj │ │ │ ├── PrismApplication.cs │ │ │ ├── PrismBootstrapper.cs │ │ │ ├── Properties/ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ ├── Resources.Designer.cs │ │ │ │ └── Resources.resx │ │ │ └── build/ │ │ │ └── Package.targets │ │ ├── Prism.Unity.Wpf/ │ │ │ ├── GlobalSuppressions.cs │ │ │ ├── Prism.Unity.Wpf.csproj │ │ │ ├── PrismApplication.cs │ │ │ ├── PrismBootstrapper.cs │ │ │ ├── Properties/ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ ├── Resources.Designer.cs │ │ │ │ ├── Resources.resx │ │ │ │ ├── Settings.Designer.cs │ │ │ │ └── Settings.settings │ │ │ ├── app.config │ │ │ └── build/ │ │ │ └── Package.targets │ │ └── Prism.Wpf/ │ │ ├── Common/ │ │ │ ├── MvvmHelpers.cs │ │ │ └── ObservableObject.cs │ │ ├── Dialogs/ │ │ │ ├── Dialog.cs │ │ │ ├── DialogService.cs │ │ │ ├── DialogWindow.xaml │ │ │ ├── DialogWindow.xaml.cs │ │ │ ├── IDialogServiceCompatExtensions.cs │ │ │ ├── IDialogWindow.cs │ │ │ ├── IDialogWindowExtensions.cs │ │ │ └── KnownDialogParameters.cs │ │ ├── Extensions/ │ │ │ ├── CollectionExtensions.cs │ │ │ └── DependencyObjectExtensions.cs │ │ ├── Interactivity/ │ │ │ ├── CommandBehaviorBase.cs │ │ │ └── InvokeCommandAction.cs │ │ ├── Ioc/ │ │ │ ├── ContainerProviderExtension.cs │ │ │ └── IContainerRegistryExtensions.cs │ │ ├── Modularity/ │ │ │ ├── AssemblyResolver.Desktop.cs │ │ │ ├── ConfigurationModuleCatalog.Desktop.cs │ │ │ ├── ConfigurationStore.Desktop.cs │ │ │ ├── DirectoryModuleCatalog.net45.cs │ │ │ ├── DirectoryModuleCatalog.netcore.cs │ │ │ ├── FileModuleTypeLoader.Desktop.cs │ │ │ ├── IAssemblyResolver.Desktop.cs │ │ │ ├── IConfigurationStore.Desktop.cs │ │ │ ├── IModuleCatalogExtensions.cs │ │ │ ├── IModuleGroupsCatalog.cs │ │ │ ├── IModuleTypeLoader.cs │ │ │ ├── ModuleAttribute.Desktop.cs │ │ │ ├── ModuleCatalog.cs │ │ │ ├── ModuleConfigurationElement.Desktop.cs │ │ │ ├── ModuleConfigurationElementCollection.Desktop.cs │ │ │ ├── ModuleDependencyCollection.Desktop.cs │ │ │ ├── ModuleDependencyConfigurationElement.Desktop.cs │ │ │ ├── ModuleInfo.Desktop.cs │ │ │ ├── ModuleInfo.cs │ │ │ ├── ModuleInfoGroup.cs │ │ │ ├── ModuleInfoGroupExtensions.cs │ │ │ ├── ModuleInitializer.cs │ │ │ ├── ModuleManager.Desktop.cs │ │ │ ├── ModuleManager.cs │ │ │ ├── ModuleTypeLoaderNotFoundException.Desktop.cs │ │ │ ├── ModuleTypeLoaderNotFoundException.cs │ │ │ ├── ModulesConfigurationSection.Desktop.cs │ │ │ └── XamlModuleCatalog.cs │ │ ├── Mvvm/ │ │ │ └── ViewModelLocator.cs │ │ ├── Navigation/ │ │ │ └── Regions/ │ │ │ ├── AllActiveRegion.cs │ │ │ ├── Behaviors/ │ │ │ │ ├── AutoPopulateRegionBehavior.cs │ │ │ │ ├── BindRegionContextToDependencyObjectBehavior.cs │ │ │ │ ├── ClearChildViewsRegionBehavior.cs │ │ │ │ ├── DelayedRegionCreationBehavior.cs │ │ │ │ ├── DestructibleRegionBehavior.cs │ │ │ │ ├── IHostAwareRegionBehavior.cs │ │ │ │ ├── RegionActiveAwareBehavior.cs │ │ │ │ ├── RegionManagerRegistrationBehavior.cs │ │ │ │ ├── RegionMemberLifetimeBehavior.cs │ │ │ │ ├── SelectorItemsSourceSyncBehavior.cs │ │ │ │ └── SyncRegionContextWithHostBehavior.cs │ │ │ ├── ContentControlRegionAdapter.cs │ │ │ ├── DefaultRegionManagerAccessor.cs │ │ │ ├── INavigationAware.cs │ │ │ ├── IRegionManagerAccessor.cs │ │ │ ├── ItemMetadata.cs │ │ │ ├── ItemsControlRegionAdapter.cs │ │ │ ├── Region.cs │ │ │ ├── RegionAdapterBase.cs │ │ │ ├── RegionAdapterMappings.cs │ │ │ ├── RegionContext.cs │ │ │ ├── RegionManager.cs │ │ │ ├── RegionNavigationContentLoader.cs │ │ │ ├── RegionNavigationService.cs │ │ │ ├── RegionViewRegistry.cs │ │ │ ├── SelectorRegionAdapter.cs │ │ │ ├── SingleActiveRegion.cs │ │ │ └── ViewsCollection.cs │ │ ├── Prism.Wpf.csproj │ │ ├── PrismApplicationBase.cs │ │ ├── PrismBootstrapperBase.cs │ │ ├── PrismInitializationExtensions.cs │ │ └── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ └── winappsdk-workaround.targets ├── tests/ │ ├── Avalonia/ │ │ ├── Prism.Avalonia.Tests/ │ │ │ ├── CollectionChangedTracker.cs │ │ │ ├── CollectionExtensionsFixture.cs │ │ │ ├── CompilerHelper.Desktop.cs │ │ │ ├── ExceptionAssert.cs │ │ │ ├── Interactivity/ │ │ │ │ ├── CommandBehaviorBaseFixture.cs │ │ │ │ ├── InvokeCommandActionFixture.cs │ │ │ │ └── ObservableBehaviorFixture.cs │ │ │ ├── ListDictionaryFixture.cs │ │ │ ├── Mocks/ │ │ │ │ ├── MockAsyncModuleTypeLoader.cs │ │ │ │ ├── MockClickableObject.cs │ │ │ │ ├── MockCommand.cs │ │ │ │ ├── MockConfigurationStore.Desktop.cs │ │ │ │ ├── MockContainerAdapter.cs │ │ │ │ ├── MockDelegateReference.cs │ │ │ │ ├── MockDependencyObject.cs │ │ │ │ ├── MockFrameworkContentElement.cs │ │ │ │ ├── MockFrameworkElement.cs │ │ │ │ ├── MockHostAwareRegionBehavior.cs │ │ │ │ ├── MockInteractionRequestAwareElement.cs │ │ │ │ ├── MockModuleTypeLoader.cs │ │ │ │ ├── MockPresentationRegion.cs │ │ │ │ ├── MockRegion.cs │ │ │ │ ├── MockRegionAdapter.cs │ │ │ │ ├── MockRegionBehavior.cs │ │ │ │ ├── MockRegionBehaviorCollection.cs │ │ │ │ ├── MockRegionManager.cs │ │ │ │ ├── MockRegionManagerAccessor.cs │ │ │ │ ├── MockSortableViews.cs │ │ │ │ ├── MockViewsCollection.cs │ │ │ │ ├── Modules/ │ │ │ │ │ ├── MockAbstractModule.cs │ │ │ │ │ ├── MockAttributedModule.cs │ │ │ │ │ ├── MockDependantModule.cs │ │ │ │ │ ├── MockDependencyModule.cs │ │ │ │ │ ├── MockExposingTypeFromGacAssemblyModule.cs │ │ │ │ │ ├── MockModuleA.cs │ │ │ │ │ ├── MockModuleReferencedAssembly.cs │ │ │ │ │ ├── MockModuleReferencingAssembly.cs │ │ │ │ │ ├── MockModuleReferencingOtherModule.cs │ │ │ │ │ └── MockModuleThrowingException.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ ├── MockOptOutViewModel.cs │ │ │ │ │ └── MockViewModel.cs │ │ │ │ └── Views/ │ │ │ │ ├── Mock.cs │ │ │ │ ├── MockOptOut.cs │ │ │ │ └── MockView.cs │ │ │ ├── Modularity/ │ │ │ │ ├── AssemblyResolverFixture.Desktop.cs │ │ │ │ ├── ConfigurationModuleCatalogFixture.Desktop.cs │ │ │ │ ├── ConfigurationStoreFixture.Desktop.cs │ │ │ │ ├── DirectoryModuleCatalogFixture.Desktop.cs │ │ │ │ ├── FileModuleTypeLoaderFixture.Desktop.cs │ │ │ │ ├── ModuleAttributeFixture.Desktop.cs │ │ │ │ ├── ModuleCatalogFixture.cs │ │ │ │ ├── ModuleCatalogXaml/ │ │ │ │ │ ├── InvalidDependencyModuleCatalog.xaml │ │ │ │ │ └── SimpleModuleCatalog.xaml │ │ │ │ ├── ModuleDependencySolverFixture.cs │ │ │ │ ├── ModuleInfoGroupExtensionsFixture.cs │ │ │ │ ├── ModuleInfoGroupFixture.cs │ │ │ │ ├── ModuleInitializerFixture.cs │ │ │ │ └── ModuleManagerFixture.cs │ │ │ ├── Mvvm/ │ │ │ │ └── ViewModelLocatorFixture.cs │ │ │ ├── Prism.Avalonia.Tests.csproj │ │ │ ├── PrismApplicationBaseFixture.cs │ │ │ ├── PrismBootstrapperBaseFixture.cs │ │ │ └── Regions/ │ │ │ ├── AllActiveRegionFixture.cs │ │ │ ├── Behaviors/ │ │ │ │ ├── AutoPopulateRegionBehaviorFixture.cs │ │ │ │ ├── BindRegionContextToAvaloniaObjectBehaviorFixture.cs │ │ │ │ ├── ClearChildViewsRegionBehaviorFixture.cs │ │ │ │ ├── DelayedRegionCreationBehaviorFixture.cs │ │ │ │ ├── RegionActiveAwareBehaviorFixture.cs │ │ │ │ ├── RegionManagerRegistrationBehaviorFixture.cs │ │ │ │ ├── RegionMemberLifetimeBehaviorFixture.cs │ │ │ │ ├── SelectorItemsSourceSyncRegionBehaviorFixture.cs │ │ │ │ └── SyncRegionContextWithHostBehaviorFixture.cs │ │ │ ├── ContentControlRegionAdapterFixture.cs │ │ │ ├── ItemsControlRegionAdapterFixture.cs │ │ │ ├── LocatorNavigationTargetHandlerFixture.cs │ │ │ ├── NavigationAsyncExtensionsFixture.cs │ │ │ ├── NavigationContextFixture.cs │ │ │ ├── RegionAdapterBaseFixture.cs │ │ │ ├── RegionAdapterMappingsFixture.cs │ │ │ ├── RegionBehaviorCollectionFixture.cs │ │ │ ├── RegionBehaviorFactoryFixture.cs │ │ │ ├── RegionBehaviorFixture.cs │ │ │ ├── RegionFixture.cs │ │ │ ├── RegionManagerFixture.cs │ │ │ ├── RegionManagerRequestNavigateFixture.cs │ │ │ ├── RegionNavigationJournalFixture.cs │ │ │ ├── RegionNavigationServiceFixture.new.cs │ │ │ ├── RegionViewRegistryFixture.cs │ │ │ ├── SelectorRegionAdapterFixture.cs │ │ │ ├── SingleActiveRegionFixture.cs │ │ │ └── ViewsCollectionFixture.cs │ │ ├── Prism.Container.Avalonia.Shared/ │ │ │ ├── Fixtures/ │ │ │ │ ├── Application/ │ │ │ │ │ └── PrismApplicationFixture.cs │ │ │ │ ├── Bootstrapper/ │ │ │ │ │ ├── BootstrapperFixture.cs │ │ │ │ │ ├── BootstrapperNullModuleCatalogFixture.cs │ │ │ │ │ └── BootstrapperRunMethodFixture.cs │ │ │ │ ├── ContainerExtensionCollection.cs │ │ │ │ ├── Ioc/ │ │ │ │ │ ├── ContainerExtensionFixture.cs │ │ │ │ │ └── ContainerProviderExtensionFixture.cs │ │ │ │ ├── Mvvm/ │ │ │ │ │ └── ViewModelLocatorFixture.cs │ │ │ │ └── Regions/ │ │ │ │ └── RegionNavigationContentLoaderFixture.cs │ │ │ ├── Mocks/ │ │ │ │ └── NullModuleCatalogBootstrapper.cs │ │ │ ├── Prism.Container.Avalonia.Shared.projitems │ │ │ └── Prism.Container.Avalonia.Shared.shproj │ │ ├── Prism.DryIoc.Avalonia.Tests/ │ │ │ ├── ContainerHelper.cs │ │ │ ├── Fixtures/ │ │ │ │ └── BootstrapperRunMethodFixture.cs │ │ │ ├── Mocks/ │ │ │ │ ├── MockBootstrapper.cs │ │ │ │ ├── MockedContainerBootstrapper.cs │ │ │ │ ├── NullLoggerBootstrapper.cs │ │ │ │ └── NullModuleCatalogBootstrapper.cs │ │ │ └── Prism.DryIoc.Avalonia.Tests.csproj │ │ └── Prism.IocContainer.Avalonia.Tests.Support/ │ │ ├── BootstrapperFixtureBase.cs │ │ ├── Mocks/ │ │ │ ├── DependantA.cs │ │ │ ├── DependantB.cs │ │ │ ├── MockModuleLoader.cs │ │ │ ├── MockRegionManager.cs │ │ │ ├── MockService.cs │ │ │ ├── ViewModels/ │ │ │ │ └── MockViewModel.cs │ │ │ └── Views/ │ │ │ └── MockView.cs │ │ └── Prism.IocContainer.Avalonia.Tests.Support.csproj │ ├── Directory.Build.targets │ ├── Maui/ │ │ ├── Directory.Build.props │ │ ├── Directory.Build.targets │ │ ├── Prism.DryIoc.Maui.Tests/ │ │ │ ├── Fixtures/ │ │ │ │ ├── Behaviors/ │ │ │ │ │ └── NavigationBehaviors.cs │ │ │ │ ├── IoC/ │ │ │ │ │ └── ContainerProviderTests.cs │ │ │ │ ├── Modularity/ │ │ │ │ │ └── ModuleCatalogTests.cs │ │ │ │ ├── Navigation/ │ │ │ │ │ ├── DynamicTabbedPageNavigationFixture.cs │ │ │ │ │ ├── NavigationSelectTabTests.cs │ │ │ │ │ ├── NavigationTests.cs │ │ │ │ │ ├── PrismWindowTests.cs │ │ │ │ │ └── WindowManagerTests.cs │ │ │ │ ├── Regions/ │ │ │ │ │ ├── RegionBehaviorFixture.cs │ │ │ │ │ └── RegionFixture.cs │ │ │ │ └── TestBase.cs │ │ │ ├── Mocks/ │ │ │ │ ├── ConcreteTypeMock.cs │ │ │ │ ├── Converters/ │ │ │ │ │ └── MockValueConverter.cs │ │ │ │ ├── Events/ │ │ │ │ │ └── TestActionEvent.cs │ │ │ │ ├── Logging/ │ │ │ │ │ ├── XUnitLogger.cs │ │ │ │ │ ├── XUnitLoggerProvider.cs │ │ │ │ │ └── XUnitLogger{T}.cs │ │ │ │ ├── Navigation/ │ │ │ │ │ ├── NavigationPop.cs │ │ │ │ │ ├── NavigationPush.cs │ │ │ │ │ ├── NavigationTestRecorder.cs │ │ │ │ │ ├── NavigationTestRecorderExtensions.cs │ │ │ │ │ └── TestPageNavigationService.cs │ │ │ │ ├── Regions/ │ │ │ │ │ └── Behaviors/ │ │ │ │ │ ├── RegionBehaviorAMock.cs │ │ │ │ │ └── RegionBehaviorBMock.cs │ │ │ │ ├── TestDispatcher.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ ├── ForcedViewModel.cs │ │ │ │ │ ├── MockContentRegionPageViewModel.cs │ │ │ │ │ ├── MockHomeViewModel.cs │ │ │ │ │ ├── MockRegionViewAViewModel.cs │ │ │ │ │ ├── MockRegionViewBViewModel.cs │ │ │ │ │ ├── MockViewAViewModel.cs │ │ │ │ │ ├── MockViewBViewModel.cs │ │ │ │ │ ├── MockViewCViewModel.cs │ │ │ │ │ ├── MockViewDViewModel.cs │ │ │ │ │ ├── MockViewEViewModel.cs │ │ │ │ │ ├── MockViewModelBase.cs │ │ │ │ │ └── MockXamlViewViewModel.cs │ │ │ │ └── Views/ │ │ │ │ ├── ForcedView.cs │ │ │ │ ├── IMessageLabel.cs │ │ │ │ ├── MockContentRegionPage.cs │ │ │ │ ├── MockExplicitTabbedPage.cs │ │ │ │ ├── MockHome.cs │ │ │ │ ├── MockPageWithRegionAndDefaultView.cs │ │ │ │ ├── MockRegionViewA.cs │ │ │ │ ├── MockRegionViewB.cs │ │ │ │ ├── MockViewA.cs │ │ │ │ ├── MockViewB.cs │ │ │ │ ├── MockViewC.cs │ │ │ │ ├── MockViewD.cs │ │ │ │ ├── MockViewE.cs │ │ │ │ ├── MockXamlView.xaml │ │ │ │ └── MockXamlView.xaml.cs │ │ │ ├── Prism.DryIoc.Maui.Tests.csproj │ │ │ └── Properties/ │ │ │ └── AssemblyInfo.cs │ │ └── Prism.Maui.Tests/ │ │ ├── Fixtures/ │ │ │ ├── Behaviors/ │ │ │ │ └── EventToCommandBehaviorFixture.cs │ │ │ ├── Common/ │ │ │ │ ├── MvvmHelperFixture.cs │ │ │ │ └── UriParsingHelperFixture.cs │ │ │ ├── Navigation/ │ │ │ │ ├── NavigationBuilderFixture.cs │ │ │ │ ├── ViewRegistryFixture.cs │ │ │ │ └── Xaml/ │ │ │ │ ├── GoBackExtensionFixture.cs │ │ │ │ └── NavigateToExtensionFixture.cs │ │ │ └── PageNavigationServiceFixture.cs │ │ ├── Mocks/ │ │ │ ├── Behaviors/ │ │ │ │ └── EventToCommandBehaviorMock.cs │ │ │ ├── ContainerMock.cs │ │ │ ├── IPageNavigationEventRecordable.cs │ │ │ ├── Ioc/ │ │ │ │ └── TestContainer.cs │ │ │ ├── MockResourcesProvider.cs │ │ │ ├── PageNavigationContainerMock.cs │ │ │ ├── PageNavigationEvent.cs │ │ │ ├── PageNavigationEventRecorder.cs │ │ │ ├── PageNavigationRecord.cs │ │ │ ├── TestDispatcher.cs │ │ │ ├── ViewModels/ │ │ │ │ ├── ContentPageMock1ViewModel.cs │ │ │ │ ├── ContentPageMockViewModel.cs │ │ │ │ ├── FlyoutPageMockViewModel.cs │ │ │ │ ├── NavigationPageMockViewModel.cs │ │ │ │ ├── NavigationPathPageMockViewModel.cs │ │ │ │ ├── PageMockViewModel.cs │ │ │ │ ├── Tab1MockViewModel.cs │ │ │ │ ├── Tab2MockViewModel.cs │ │ │ │ ├── Tab3MockViewModel.cs │ │ │ │ ├── TabbedPageMockViewModel.cs │ │ │ │ ├── VMLDisabledPageMockViewModel.cs │ │ │ │ └── ViewModelBase.cs │ │ │ └── Views/ │ │ │ ├── ContentPageMock.cs │ │ │ ├── ContentPageMock1.cs │ │ │ ├── FlyoutPageEmptyMock.cs │ │ │ ├── FlyoutPageMock.cs │ │ │ ├── NavigationPageEmptyMock.cs │ │ │ ├── NavigationPageEmptyMock_Reused.cs │ │ │ ├── NavigationPageMock.cs │ │ │ ├── NavigationPagePathPageMock.cs │ │ │ ├── NavigationPageWithStackMock.cs │ │ │ ├── NavigationPageWithStackNoMatchMock.cs │ │ │ ├── NavigationPathPageMock2.cs │ │ │ ├── NavigationPathPageMock3.cs │ │ │ ├── NavigationPathPageMock4.cs │ │ │ ├── NavigationPathTabbedPageMock.cs │ │ │ ├── PageMock.cs │ │ │ ├── SecondContentPageMock.cs │ │ │ ├── Tab1Mock.cs │ │ │ ├── Tab2Mock.cs │ │ │ ├── Tab3Mock.cs │ │ │ ├── TabbedPageEmptyMock.cs │ │ │ ├── TabbedPageMock.cs │ │ │ └── VMLDisabledPageMock.cs │ │ └── Prism.Maui.Tests.csproj │ ├── Prism.Core.Tests/ │ │ ├── Commands/ │ │ │ ├── AsyncDelegateCommandFixture.cs │ │ │ ├── CompositeCommandFixture.cs │ │ │ ├── DelegateCommandFixture.cs │ │ │ └── TestPurposeBindableBase.cs │ │ ├── Common/ │ │ │ ├── ListDictionaryFixture.cs │ │ │ ├── Mocks/ │ │ │ │ ├── MockEnum.cs │ │ │ │ └── MockParameters.cs │ │ │ ├── MulticastExceptionHandlerFixture.cs │ │ │ └── ParametersFixture.cs │ │ ├── Events/ │ │ │ ├── BackgroundEventSubscriptionFixture.cs │ │ │ ├── DataEventArgsFixture.cs │ │ │ ├── DelegateReferenceFixture.cs │ │ │ ├── DispatcherEventSubscriptionFixture.cs │ │ │ ├── EventAggregatorFixture.cs │ │ │ ├── EventBaseFixture.cs │ │ │ ├── EventSubscriptionFixture.cs │ │ │ ├── MockDelegateReference.cs │ │ │ └── PubSubEventFixture.cs │ │ ├── Extensions/ │ │ │ └── TaskExtensionsFixture.cs │ │ ├── Mocks/ │ │ │ ├── ViewModels/ │ │ │ │ ├── MockValidatingViewModel.cs │ │ │ │ └── MockViewModel.cs │ │ │ └── Views/ │ │ │ ├── Mock.cs │ │ │ └── MockView.cs │ │ ├── Mvvm/ │ │ │ ├── BindableBaseFixture.cs │ │ │ ├── ErrorsContainerFixture.cs │ │ │ ├── PropertySupportFixture.cs │ │ │ └── ViewModelLocationProviderFixture.cs │ │ ├── Navigation/ │ │ │ └── NavigationParametersFixture.cs │ │ └── Prism.Core.Tests.csproj │ └── Wpf/ │ ├── Prism.Container.Wpf.Shared/ │ │ ├── Fixtures/ │ │ │ ├── Application/ │ │ │ │ └── PrismApplicationFixture.cs │ │ │ ├── Bootstrapper/ │ │ │ │ ├── BootstrapperFixture.cs │ │ │ │ ├── BootstrapperNullModuleCatalogFixture.cs │ │ │ │ └── BootstrapperRunMethodFixture.cs │ │ │ ├── ContainerExtensionCollection.cs │ │ │ ├── Ioc/ │ │ │ │ ├── ContainerExtensionFixture.cs │ │ │ │ └── ContainerProviderExtensionFixture.cs │ │ │ ├── Mvvm/ │ │ │ │ └── ViewModelLocatorFixture.cs │ │ │ └── Regions/ │ │ │ └── RegionNavigationContentLoaderFixture.cs │ │ ├── Mocks/ │ │ │ └── NullModuleCatalogBootstrapper.cs │ │ ├── Prism.Container.Wpf.Shared.projitems │ │ └── Prism.Container.Wpf.Shared.shproj │ ├── Prism.DryIoc.Wpf.Tests/ │ │ ├── ContainerHelper.cs │ │ ├── ContainerResources.cs │ │ ├── Fixtures/ │ │ │ └── BootstrapperRunMethodFixture.cs │ │ ├── Mocks/ │ │ │ ├── MockBootstrapper.cs │ │ │ ├── MockedContainerBootstrapper.cs │ │ │ ├── NullLoggerBootstrapper.cs │ │ │ └── NullModuleCatalogBootstrapper.cs │ │ └── Prism.DryIoc.Wpf.Tests.csproj │ ├── Prism.IocContainer.Wpf.Tests.Support/ │ │ ├── BootstrapperFixtureBase.cs │ │ ├── Mocks/ │ │ │ ├── DependantA.cs │ │ │ ├── DependantB.cs │ │ │ ├── MockModuleLoader.cs │ │ │ ├── MockRegionManager.cs │ │ │ ├── MockService.cs │ │ │ ├── ViewModels/ │ │ │ │ └── MockViewModel.cs │ │ │ └── Views/ │ │ │ └── MockView.cs │ │ └── Prism.IocContainer.Wpf.Tests.Support.csproj │ ├── Prism.Unity.Wpf.Tests/ │ │ ├── ContainerHelper.cs │ │ ├── ContainerResources.cs │ │ ├── Fixtures/ │ │ │ └── BootstrapperRunMethodFixture.cs │ │ ├── Mocks/ │ │ │ ├── MockBootstrapper.cs │ │ │ ├── MockedContainerBootstrapper.cs │ │ │ ├── NullLoggerBootstrapper.cs │ │ │ └── NullModuleCatalogBootstrapper.cs │ │ ├── Prism.Unity.Wpf.Tests.csproj │ │ └── app.config │ └── Prism.Wpf.Tests/ │ ├── App.config │ ├── CollectionChangedTracker.cs │ ├── CollectionExtensionsFixture.cs │ ├── CompilerHelper.Desktop.cs │ ├── ExceptionAssert.cs │ ├── Interactivity/ │ │ ├── CommandBehaviorBaseFixture.cs │ │ └── InvokeCommandActionFixture.cs │ ├── Mocks/ │ │ ├── MockAsyncModuleTypeLoader.cs │ │ ├── MockClickableObject.cs │ │ ├── MockCommand.cs │ │ ├── MockConfigurationStore.Desktop.cs │ │ ├── MockContainerAdapter.cs │ │ ├── MockDelegateReference.cs │ │ ├── MockDependencyObject.cs │ │ ├── MockFrameworkContentElement.cs │ │ ├── MockFrameworkElement.cs │ │ ├── MockHostAwareRegionBehavior.cs │ │ ├── MockModuleTypeLoader.cs │ │ ├── MockPresentationRegion.cs │ │ ├── MockRegion.cs │ │ ├── MockRegionAdapter.cs │ │ ├── MockRegionBehavior.cs │ │ ├── MockRegionBehaviorB.cs │ │ ├── MockRegionBehaviorCollection.cs │ │ ├── MockRegionManager.cs │ │ ├── MockRegionManagerAccessor.cs │ │ ├── MockSortableViews.cs │ │ ├── MockViewsCollection.cs │ │ ├── Modules/ │ │ │ ├── MockAbstractModule.cs │ │ │ ├── MockAttributedModule.cs │ │ │ ├── MockDependantModule.cs │ │ │ ├── MockDependencyModule.cs │ │ │ ├── MockExposingTypeFromGacAssemblyModule.cs │ │ │ ├── MockModuleA.cs │ │ │ ├── MockModuleReferencedAssembly.cs │ │ │ ├── MockModuleReferencingAssembly.cs │ │ │ ├── MockModuleReferencingOtherModule.cs │ │ │ └── MockModuleThrowingException.cs │ │ ├── ViewModels/ │ │ │ ├── MockOptOutViewModel.cs │ │ │ └── MockViewModel.cs │ │ └── Views/ │ │ ├── Mock.cs │ │ ├── MockOptOut.cs │ │ └── MockView.cs │ ├── Modularity/ │ │ ├── AssemblyResolverFixture.Desktop.cs │ │ ├── ConfigurationModuleCatalogFixture.Desktop.cs │ │ ├── ConfigurationStoreFixture.Desktop.cs │ │ ├── DirectoryModuleCatalogFixture.Desktop.cs │ │ ├── FileModuleTypeLoaderFixture.Desktop.cs │ │ ├── ModuleAttributeFixture.Desktop.cs │ │ ├── ModuleCatalogFixture.cs │ │ ├── ModuleCatalogXaml/ │ │ │ ├── InvalidDependencyModuleCatalog.xaml │ │ │ └── SimpleModuleCatalog.xaml │ │ ├── ModuleDependencySolverFixture.cs │ │ ├── ModuleInfoGroupExtensionsFixture.cs │ │ ├── ModuleInfoGroupFixture.cs │ │ ├── ModuleInitializerFixture.cs │ │ ├── ModuleManagerExtensionsFixture.cs │ │ ├── ModuleManagerFixture.cs │ │ └── XamlModuleCatalogFixture.cs │ ├── Mvvm/ │ │ └── ViewModelLocatorFixture.cs │ ├── Prism.Wpf.Tests.csproj │ ├── PrismApplicationBaseFixture.cs │ ├── PrismBootstapperBaseFixture.cs │ └── Regions/ │ ├── AllActiveRegionFixture.cs │ ├── Behaviors/ │ │ ├── AutoPopulateRegionBehaviorFixture.cs │ │ ├── BindRegionContextToDependencyObjectBehaviorFixture.cs │ │ ├── ClearChildViewsRegionBehaviorFixture.cs │ │ ├── DelayedRegionCreationBehaviorFixture.cs │ │ ├── RegionActiveAwareBehaviorFixture.cs │ │ ├── RegionManagerRegistrationBehaviorFixture.cs │ │ ├── RegionMemberLifetimeBehaviorFixture.cs │ │ ├── SelectorItemsSourceSyncRegionBehaviorFixture.cs │ │ └── SyncRegionContextWithHostBehaviorFixture.cs │ ├── ContentControlRegionAdapterFixture.cs │ ├── ItemsControlRegionAdapterFixture.cs │ ├── LocatorNavigationTargetHandlerFixture.cs │ ├── NavigationAsyncExtensionsFixture.cs │ ├── NavigationContextFixture.cs │ ├── RegionAdapterBaseFixture.cs │ ├── RegionAdapterMappingsFixture.cs │ ├── RegionBehaviorCollectionFixture.cs │ ├── RegionBehaviorFactoryFixture.cs │ ├── RegionBehaviorFixture.cs │ ├── RegionFixture.cs │ ├── RegionManagerFixture.cs │ ├── RegionManagerRequestNavigateFixture.cs │ ├── RegionNavigationJournalFixture.cs │ ├── RegionNavigationServiceFixture.new.cs │ ├── RegionViewRegistryFixture.cs │ ├── SelectorRegionAdapterFixture.cs │ ├── SingleActiveRegionFixture.cs │ └── ViewsCollectionFixture.cs ├── version.json ├── winappsdk-workarounds.targets └── xunit.runner.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dependabot/config.yml ================================================ version: 1 update_configs: - package_manager: "dotnet:nuget" directory: "/" update_schedule: "weekly" default_labels: - "dependencies" target_branch: "master" ================================================ FILE: .editorconfig ================================================ ; This file is for unifying the coding style for different editors and IDEs. ; More information at http://editorconfig.org # This file is the top-most EditorConfig file root = true ########################################## # Common Settings ########################################## [*] indent_style = space end_of_line = crlf trim_trailing_whitespace = true insert_final_newline = true charset = utf-8 ########################################## # File Extension Settings ########################################## [*.{yml,yaml}] indent_size = 2 [.vsconfig] indent_size = 2 end_of_line = lf [*.sln] indent_style = tab indent_size = 2 [*.{csproj,proj,projitems,shproj}] indent_size = 2 [*.{json,slnf}] indent_size = 2 end_of_line = lf [*.{props,targets}] indent_size = 2 [*.{xaml,axml}] indent_size = 2 charset = utf-8-bom [*.xml] indent_size = 2 end_of_line = lf [*.plist] indent_size = 2 indent_style = tab end_of_line = lf [*.manifest] indent_size = 2 [*.appxmanifest] indent_size = 2 [*.{json,css,webmanifest}] indent_size = 2 end_of_line = lf [web.config] indent_size = 2 end_of_line = lf [*.sh] indent_size = 2 end_of_line = lf [*.cs] # EOL should be normalized by Git. See https://github.com/dotnet/format/issues/1099 end_of_line = unset # See https://github.com/dotnet/roslyn/issues/20356#issuecomment-310143926 trim_trailing_whitespace = false tab_width = 4 indent_size = 4 # Sort using and Import directives with System.* appearing first dotnet_sort_system_directives_first = true # Avoid "this." and "Me." if not necessary dotnet_style_qualification_for_field = false:suggestion dotnet_style_qualification_for_property = false:suggestion dotnet_style_qualification_for_method = false:suggestion dotnet_style_qualification_for_event = false:suggestion #### Naming styles #### # Naming rules dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion dotnet_naming_rule.types_should_be_pascal_case.symbols = types dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case # Symbol specifications dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.types.required_modifiers = dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.non_field_members.required_modifiers = # Naming styles dotnet_naming_style.begins_with_i.required_prefix = I dotnet_naming_style.begins_with_i.required_suffix = dotnet_naming_style.begins_with_i.word_separator = dotnet_naming_style.begins_with_i.capitalization = pascal_case dotnet_naming_style.pascal_case.required_prefix = dotnet_naming_style.pascal_case.required_suffix = dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_naming_style.pascal_case.required_prefix = dotnet_naming_style.pascal_case.required_suffix = dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_style_operator_placement_when_wrapping = beginning_of_line dotnet_style_coalesce_expression = true:suggestion dotnet_style_null_propagation = true:suggestion dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion dotnet_style_prefer_auto_properties = true:silent dotnet_style_object_initializer = true:suggestion dotnet_style_collection_initializer = true:suggestion dotnet_style_prefer_simplified_boolean_expressions = true:suggestion dotnet_style_prefer_conditional_expression_over_assignment = true:silent dotnet_style_prefer_conditional_expression_over_return = true:silent dotnet_style_explicit_tuple_names = true:suggestion dotnet_style_prefer_inferred_tuple_names = true:suggestion csharp_indent_labels = one_less_than_current csharp_using_directive_placement = outside_namespace:silent csharp_prefer_simple_using_statement = true:suggestion csharp_prefer_braces = true:silent csharp_style_namespace_declarations = file_scoped:silent csharp_style_prefer_method_group_conversion = true:silent csharp_style_prefer_top_level_statements = true:silent csharp_style_prefer_primary_constructors = true:suggestion csharp_style_expression_bodied_methods = false:silent csharp_style_expression_bodied_constructors = false:silent csharp_style_expression_bodied_operators = false:silent csharp_style_expression_bodied_properties = true:silent csharp_style_expression_bodied_indexers = true:silent csharp_style_expression_bodied_accessors = true:silent csharp_style_expression_bodied_lambdas = true:silent csharp_style_expression_bodied_local_functions = false:silent ================================================ FILE: .gitattributes ================================================ ############################################################################### # Set default behavior to automatically normalize line endings. ############################################################################### * text=auto ############################################################################### # Set default behavior for command prompt diff. # # This is need for earlier builds of msysgit that does not have it on by # default for csharp files. # Note: This is only used by command line ############################################################################### #*.cs diff=csharp ############################################################################### # Set the merge driver for project and solution files # # Merging from the command prompt will add diff markers to the files if there # are conflicts (Merging from VS is not affected by the settings below, in VS # the diff markers are never inserted). Diff markers may cause the following # file extensions to fail to load in VS. An alternative would be to treat # these files as binary and thus will always conflict and require user # intervention with every merge. To do so, just uncomment the entries below ############################################################################### #*.sln merge=binary #*.csproj merge=binary #*.vbproj merge=binary #*.vcxproj merge=binary #*.vcproj merge=binary #*.dbproj merge=binary #*.fsproj merge=binary #*.lsproj merge=binary #*.wixproj merge=binary #*.modelproj merge=binary #*.sqlproj merge=binary #*.wwaproj merge=binary ############################################################################### # behavior for image files # # image files are treated as binary by default. ############################################################################### #*.jpg binary #*.png binary #*.gif binary ############################################################################### # diff behavior for common document formats # # Convert binary document formats to text before diffing them. This feature # is only available from the command line. Turn it on by uncommenting the # entries below. ############################################################################### #*.doc diff=astextplain #*.DOC diff=astextplain #*.docx diff=astextplain #*.DOCX diff=astextplain #*.dot diff=astextplain #*.DOT diff=astextplain #*.pdf diff=astextplain #*.PDF diff=astextplain #*.rtf diff=astextplain #*.RTF diff=astextplain ================================================ FILE: .github/CODEOWNERS ================================================ # CI & Build global.json @dansiegel *.targets @dansiegel *.props @dansiegel /build/ @dansiegel /e2e/ @dansiegel # Prism.Core /src/Prism.Core/ @brianlagunas @dansiegel /tests/Prism.Core.Tests/ @brianlagunas @dansiegel # WPF /src/Wpf/ @brianlagunas /tests/Wpf/ @brianlagunas /e2e/Wpf/ @brianlagunas ================================================ FILE: .github/CONTRIBUTING.md ================================================ # Contributing to Prism Welcome! We would love to have you contribute bug fixes or new functionality to Prism. The best starting point is to enter an __issue__ [here](https://github.com/PrismLibrary/Prism/issues). We can then have a brief discussion on what you want to do and where it fits with our milestones and goals for the library. As long as it sounds like something we would want to add to Prism, we will give you a thumbs up and ask for a pull request. If no issue is submitted, your PR may be closed immediately. When you submit a __pull request__, there are a few things we would like you to comply with: - New functionality must have accompanying unit tests with "good" code coverage if it is logic code that can be unit tested (i.e. not view stuff touching UI or platform APIs) - Changes to existing functionality needs to be checked that it does not break any existing unit tests. If it does, then fixes to the unit test may be appropriate, but only if those changes maintain the original intent of the test. - Some basic coding standard guidelines to start with: - no leading "this." - single type per file - interface-based design to preserve testability and extensibility - due consideration for inheritance (i.e. consider carefully whether something should be protected or virtual) - member variables have leading underscore and are _camelCased - local variables are camelCased with no prefix - types, properties, methods, events are PascalCased - use new C# features (e.g nameof) where possible, but keep the code readable (e.g. don't var everything) ================================================ FILE: .github/FUNDING.yml ================================================ github: [brianlagunas, dansiegel] ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: 🐞 Bug title: '[BUG] ' description: File a bug report labels: ["bug", "to verify"] assignees: [] body: - type: markdown attributes: value: | Thanks for taking the time to fill out this bug report! Please make sure to add as much detail as you can, Bug reports without a [reproduction](https://github.com/prismlibrary/prism/blob/master/.github/repro.md) will be closed. This will help us diagnose the issue faster and thus resolve it quicker. - type: textarea id: description attributes: label: Description description: Please give us a detailed description of the issue that you're seeing. You can add screenshots and videos as well. We require [reproduction projects](https://github.com/prismlibrary/prism/blob/master/.github/repro.md), please provide them through a GitHub repo and link that here. placeholder: Tell us what you see! validations: required: true - type: textarea id: repro-steps attributes: label: Steps to Reproduce description: Describe all the steps we need to take to show the behavior that you have observed. Also, include what you expected to happen and what did actually happen. placeholder: | 1. Create a File > New App 2. Add a `Button` like so: `<Button Text="this is a bug" />` 3. Click the added button and observe the bug 🐞 Expected outcome: a bug was added Actual outcome: a ladybug appeared validations: required: true - type: dropdown id: platform-with-bug attributes: label: Platform with bug description: What Platform is this bug affecting? options: - WPF - Xamarin.Forms - Uno Platform - UWP - Uno Platform - WinUI - .NET MAUI - Prism Core validations: required: true - type: dropdown id: platforms-affected attributes: label: Affected platforms description: Select all or any platform that you see this issue on. This helps us determine if it's something platform-specific or in the core. If you were only able to test on 1 platform, please check the last option to inform us about that. multiple: true options: - iOS - Android - Windows - macOS - Other (Tizen, Linux, etc.) - I was *not* able test on other platforms validations: required: true - type: textarea id: workaround attributes: label: Did you find any workaround? description: Did you find any workaround for this issue? This can unblock other people while waiting for this issue to be resolved or even give us a hint on how to fix this. - type: textarea id: logs attributes: label: Relevant log output description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for back ticks. render: shell ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: File a bug with the Prism Templates url: https://github.com/PrismLibrary/Prism.Templates/issues/new/choose about: Issues related to the Prism Templates should be filed in the Prism.Templates repo - name: Ask a Question url: https://github.com/PrismLibrary/Prism/discussions/category_choices about: Please ask and answer questions for Prism here. - name: Read the Docs url: https://prismlibrary.com/docs about: Be sure you've read the docs! - name: Report missing docs url: https://github.com/PrismLibrary/Prism-Documentation/issues/new about: Did we miss docs on something? Let us know here! ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project title: "[Enhancement] YOUR IDEA!" labels: enhancement assignees: '' --- ## Summary Please provide a brief summary of your proposal. Two to three sentences is best here. ## API Changes Include a list of all API changes, additions, subtractions as would be required by your proposal. These APIs should be considered placeholders, so the naming is not as important as getting the concepts correct. If possible you should include some "example" code of usage of your new API. e.g. In order to facilitate the new Shiny Button api, a bool is added to the Button class. This is done as a bool because it is simpler to data bind and other reasons... var button = new Button (); button.MakeShiny = true; // new API The MakeShiny API works even if the button is already visible. ## Intended Use Case Provide a detailed example of where your proposal would be used and for what purpose. ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ ### Description <!-- REQUIRED --> <!-- Issues reporting a bug, but lacking a Reproduction will be closed! Please ask questions on StackOverflow or on Slack. Issues opened that are questions will be closed without comment. --> ### Steps to Reproduce 1. 2. 3. ### Expected Behavior ### Actual Behavior ### Basic Information - Version with issue: - Last known good version: - Xamarin.Forms version: - IDE: ### Screenshots <!-- If the issue is a visual issue, please include screenshots showing the problem if possible --> ### Reproduction Link <!-- REQUIRED - Please upload or provide a link to a reproduction case. If no reproduction sample is included, this issue may be closed or ignored until a sample has been provided --> ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ## Description of Change Describe your changes here. ### Bugs Fixed - Provide links to bugs here ### API Changes List all API changes here (or just put None), example: Added: - void INavigationService.GoBackToRootAsync(); Changed: - void INavigationService.GoBackAsync => bool INavigationService.GoBackAsync ### Behavioral Changes Describe any non-bug related behavioral changes that may change how users app behaves when upgrading to this version of the codebase. ### PR Checklist - [ ] Has tests (if omitted, state reason in description) - [ ] Rebased on top of master at time of PR - [ ] Changes adhere to coding standard ================================================ FILE: .github/lock.yml ================================================ # Configuration for Lock Threads - https://github.com/dessant/lock-threads # Number of days of inactivity before a closed issue or pull request is locked daysUntilLock: 14 # Skip issues and pull requests created before a given timestamp. Timestamp must # follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable skipCreatedBefore: false # Issues and pull requests with these labels will be ignored. Set to `[]` to disable exemptLabels: [] # Label to add before locking, such as `outdated`. Set to `false` to disable lockLabel: false # Comment to post before locking. Set to `false` to disable lockComment: > This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. # Assign `resolved` as the reason for locking. Set to `false` to disable setLockReason: true # Limit to only `issues` or `pulls` # only: issues # Optionally, specify configuration settings just for `issues` or `pulls` # issues: # exemptLabels: # - help-wanted # lockLabel: outdated # pulls: # daysUntilLock: 30 # Repository to extend settings from # _extends: repo ================================================ FILE: .github/repo.md ================================================ # Prism Library Bug Report Reproduction Guide First or all, thank you for reporting this potential bug. Here you will find more information about why we ask you for a reproducible example of the problem, and how to provide it. ## What is a reproduction? A reproduction, reproducible example or just repro for short is the most basic code to demonstrate the issue that you're seeing. It's the simplest way to reproduce the issue. Ideally, you should be able to reproduce the issue by just running the code in the project you have provided and see the problem. If any reproduction steps are needed, either note them in the issue or include them in the project somehow. ## Why do we ask for a reproducible example? Depending on your project a codebase can be pretty big. The bigger your project, the more factors that can be of influence on a bug or issue that you might be seeing. In order to be sure that this is something that is happening in Prism and not something in your code (or a combination of these things), it is super helpful to have a small sample that reproduces the issue. This way we can: * better pinpoint the source of the issue; * therefore, we can fix the issue faster; * and we can make sure that the issue is not a false positive. It also acts as a double-edged sword. When you take your code apart piece-by-piece in a new project, adding things back one by one, it will become very clear what different factors are at play here and you might discover that the issue might be something in your code. At the very least you will be able to provide a very detailed description of what you're seeing. That helps us get to the cause faster and resolve the issue quicker. ### I just want to report a bug, why do you want a reproduction? We hear this a lot. We understand you're busy, we're all busy! A reproduction is not just about pleasing us or you doing our work. As already mentioned above, it will help you get a better understanding of where the issue is exactly. We've seen lots of cases where people realized, through a reproduction, that the solution was right within their reach. Regardless of it being a bug in Prism or not. We like to see this as a team effort. #### But I don't have time for this! Please help us, help you! The Prism team works on Prism in their spare time, and for free, we cannot make time to try to reproduce your issues. This is an open-source project under the MIT license. Provided as-is, without any support or guarantees. We care about our project and therefore by extension also about your project. But realize that when you come onto our repo, maybe frustrated because things are not working and you just drop a one-liner, no reproduction, mentioning that you don't have the time, that's also not very motivating for us. On the other end of these GitHub issues are still people. People that are doing their best to move this project forward, people that do not enjoying seeing you being blocked. Also consider how that comes across. If you don't have the time to report in detail what is going on, then really how important is the issue? If this is really important and blocking you, it would seem to make sense to prioritize getting us all the details to help resolve this faster. We are all here to help you. But remember that we don't know your project and we don't know any details, please help us understand and be nice. ## How to provide a reproduction project? With a reproduction we want to rule out a couple of things: * The issue is not in your code, but in the Prism Library; * The issue has not been already resolved in the latest version of Prism which may not be the latest version available on NuGet.org; Therefore we would like to propose the following steps to create a reproduction sample: * Check if you are using the latest version of Prism and you can still reproduce the issue; * If yes, please check any available preview versions of Prism and see if you can reproduce the issue; * If you still can, please check to see if there are is an issue already opened on the repository for it; * If there is, see if you can add any more detail about your specific case, that might help to resolve it quicker. If you don't have any additional information, add an emoji to the first post of the issue so we know how many people are impacted by this. * If there is no issue for it yet, please open one and provide detailed answers to everything in the New Issue form. At this point we would love for you to include the reproduction. * Start with a File > New project, in other words, a clean, new Prism project. Make sure that you are using the last version of Prism. * Start extracting the code from your project, piece-by-piece, until you have reach the issue. * Try to remove some code or make small changes to see how that influences the issue you're seeing. Remove any code that is not needed to reproduce the issue. This is noise and will interfere with getting to a cause and solution. * Put the code on a GitHub repository and include that link in the issue that you're opening. **Note: we can't accept any zip files attached to the issue.** If we need the code in a zip, we can get that from the GitHub repository. This will also make it easier to collaborate. If we think we spot something that doesn't look right, we can open a PR on your repro repo (😬) and you can easily see the differences. ## Big don'ts! - Never put any sensitive information in your code. No API keys, credentials, personal information, etc. - Never put any proprietary code in your reproduction. We are contractually not allowed to look at code that you do not own without bit legal hassles and NDA's. - Never submit binaries (mostly covered by putting it on a GitHub repo) - Do not reference external data-sources, this should rarely be needed. - Always refer to concrete version numbers. Avoid saying "this happens in the latest version". We don't know if you're using a preview version or maybe you _think_ you're using the latest version but actually aren't. To avoid any confusion, always refer to exact version numbers. - Do not confuse an open issue with paid support. If you require actual Enterprise Support please see Monthly or Yearly Support options with [AvantiPoint](https://avantipoint.com/developer/support) ================================================ FILE: .github/stale.yml ================================================ # Number of days of inactivity before an issue becomes stale daysUntilStale: 60 # Number of days of inactivity before a stale issue is closed daysUntilClose: 7 # Issues with these labels will never be considered stale exemptLabels: - 'blocked by platform' - 'to verify' - 'roadmap' # Label to use when marking an issue as stale staleLabel: wontfix # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: false # Limit the number of actions per hour, from 1-30. Default is 30 limitPerRun: 4 pulls: exemptLabels: - 'DO-NOT-MERGE-!!! :stop_sign:' ================================================ FILE: .github/workflows/build_avalonia.yml ================================================ name: build_avalonia on: workflow_dispatch: pull_request: branches: - master paths: - .github/workflows/build_forms.yml - Directory.Build.props - Directory.Build.targets - Directory.Packages.props - xunit.runner.json - 'src/Prism.Core/**' - 'src/Prism.Events/**' - 'tests/Prism.Core.Tests/**' - 'src/Avalonia/**' - 'tests/Avalonia/**' jobs: build-prism-avalonia: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Avalonia solution-path: PrismLibrary_Avalonia.slnf dotnet-version: 10.0.100 ================================================ FILE: .github/workflows/build_core.yml ================================================ name: build_core on: workflow_dispatch: pull_request: branches: - master paths: - .github/workflows/build_core.yml - Directory.Build.props - Directory.Build.targets - Directory.Packages.props - xunit.runner.json - 'src/Prism.Core/**' - 'src/Prism.Events/**' - 'tests/Prism.Core.Tests/**' jobs: build-prism-core: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Core solution-path: PrismLibrary_Core.slnf dotnet-version: 10.0.100 ================================================ FILE: .github/workflows/build_maui.yml ================================================ name: build_maui on: workflow_dispatch: pull_request: branches: - master paths: - .github/workflows/build_maui.yml - Directory.Build.props - Directory.Build.targets - Directory.Packages.props - xunit.runner.json - 'src/Prism.Core/**' - 'src/Prism.Events/**' - 'tests/Prism.Core.Tests/**' - 'src/Maui/**' - 'tests/Containers/**' - 'tests/Maui/**' jobs: build-prism-maui: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Maui solution-path: PrismLibrary_Maui.slnf install-workload: maui maui-tizen dotnet-version: 10.0.100 ================================================ FILE: .github/workflows/build_uno.yml ================================================ name: build_uno on: workflow_dispatch: pull_request: branches: - master paths: - .github/workflows/build_forms.yml - Directory.Build.props - Directory.Build.targets - Directory.Packages.props - xunit.runner.json - 'src/Prism.Core/**' - 'src/Prism.Events/**' - 'tests/Prism.Core.Tests/**' - 'src/Wpf/**' - 'tests/Wpf/**' - 'src/Uno/**' - 'tests/Uno/**' jobs: build-prism-uno: uses: avantipoint/workflow-templates/.github/workflows/msbuild-build.yml@v1 with: name: Build Prism.Uno solution-path: PrismLibrary_Uno.slnf windows-sdk-version: 18362 dotnet-version: 10.0.100 install-workload: ios android macos maccatalyst wasm-tools tvos uno-check: false uno-check-version: 1.33.1 uno-check-parameters: '--skip xcode --skip gtk3 --skip vswin --skip androidemulator --skip androidsdk --skip vsmac --skip dotnetnewunotemplates' run-tests: false ================================================ FILE: .github/workflows/build_wpf.yml ================================================ name: build_wpf on: workflow_dispatch: pull_request: branches: - master paths: - .github/workflows/build_forms.yml - Directory.Build.props - Directory.Build.targets - Directory.Packages.props - xunit.runner.json - 'src/Prism.Core/**' - 'src/Prism.Events/**' - 'tests/Prism.Core.Tests/**' - 'src/Wpf/**' - 'tests/Wpf/**' jobs: build-prism-wpf: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Wpf solution-path: PrismLibrary_Wpf.slnf dotnet-version: 10.0.100 ================================================ FILE: .github/workflows/ci.yml ================================================ name: Prism CI on: push: branches: - master - 'releases/**' paths: - .github/workflows/ci.yml - Directory.Build.props - Directory.Build.targets - Directory.Packages.props - xunit.runner.json - version.json - LICENSE - global.json - 'src/**' pull_request: branches: - master - 'releases/**' paths: - .github/workflows/ci.yml workflow_dispatch: jobs: build-prism-core: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Core solution-path: PrismLibrary_Core.slnf code-sign: false artifact-name: Core dotnet-version: 10.0.100 secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-wpf: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Wpf solution-path: PrismLibrary_Wpf.slnf code-sign: false artifact-name: Wpf dotnet-version: 10.0.100 secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-uno: uses: avantipoint/workflow-templates/.github/workflows/msbuild-build.yml@v1 with: name: Build Prism.Uno solution-path: PrismLibrary_Uno.slnf windows-sdk-version: 18362 dotnet-version: 10.0.100 install-workload: ios android macos maccatalyst wasm-tools tvos uno-check: false uno-check-version: 1.33.1 uno-check-parameters: '--skip xcode --skip gtk3 --skip vswin --skip androidemulator --skip androidsdk --skip vsmac --skip dotnetnewunotemplates' run-tests: false code-sign: false artifact-name: Uno secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-maui: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Maui solution-path: PrismLibrary_Maui.slnf install-workload: maui maui-tizen code-sign: false artifact-name: Maui dotnet-version: 10.0.100 secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-avalonia: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Avalonia solution-path: PrismLibrary_Avalonia.slnf code-sign: false artifact-name: Avalonia dotnet-version: 10.0.100 secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} generate-consolidated-artifacts: needs: [build-prism-core, build-prism-wpf, build-prism-uno, build-prism-maui, build-prism-avalonia] runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Download Core uses: actions/download-artifact@v4 with: name: Core path: artifacts\Core - name: Download Wpf uses: actions/download-artifact@v4 with: name: Wpf path: artifacts\Wpf - name: Download Uno uses: actions/download-artifact@v4 with: name: Uno path: artifacts\Uno - name: Download Maui uses: actions/download-artifact@v4 with: name: Maui path: artifacts\Maui - name: Download Avalonia uses: actions/download-artifact@v4 with: name: Avalonia path: artifacts\Avalonia - name: Consolidate Artifacts run: build\consolidate-artifacts.ps1 shell: powershell - name: Upload Consolidated NuGets uses: actions/upload-artifact@v4 with: name: NuGet path: .\artifacts\nuget deploy-internal: uses: avantipoint/workflow-templates/.github/workflows/deploy-nuget.yml@v1 needs: generate-consolidated-artifacts if: ${{ github.event_name == 'push' }} with: name: Deploy Internal secrets: feedUrl: ${{ secrets.IN_HOUSE_NUGET_FEED }} apiKey: ${{ secrets.IN_HOUSE_API_KEY }} deploy-commercial-plus: uses: avantipoint/workflow-templates/.github/workflows/deploy-nuget.yml@v1 needs: generate-consolidated-artifacts if: ${{ github.event_name == 'push' }} with: name: Deploy Commercial Plus secrets: feedUrl: ${{ secrets.PRISM_NUGET_FEED }} apiKey: ${{ secrets.PRISM_NUGET_TOKEN }} ================================================ FILE: .github/workflows/publish-release.yml ================================================ name: Publish Prism Release on: release: types: [published] jobs: publish-internal: uses: avantipoint/workflow-templates/.github/workflows/deploy-nuget-from-release.yml@v1 secrets: feedUrl: ${{ secrets.IN_HOUSE_NUGET_FEED }} apiKey: ${{ secrets.IN_HOUSE_API_KEY }} publish-commercial-plus: uses: avantipoint/workflow-templates/.github/workflows/deploy-nuget-from-release.yml@v1 secrets: feedUrl: ${{ secrets.PRISM_NUGET_FEED }} apiKey: ${{ secrets.PRISM_NUGET_TOKEN }} ================================================ FILE: .github/workflows/sponsor-actions.yml ================================================ on: issues: types: [opened] pull_request: types: [opened] jobs: sponsor_job: runs-on: ubuntu-latest name: Add Sponsor Labels steps: - name: Add Sponsor Labels id: sponsor-labels uses: brianlagunas/sponsor-action@v1.0 with: maintainers: 'brianlagunas,dansiegel' github_token: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .github/workflows/start-release.yml ================================================ name: Start NuGet Release on: workflow_dispatch: jobs: build-prism-core: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Core solution-path: PrismLibrary_Core.slnf code-sign: true artifact-name: Core build-args: /p:OfficialRelease=true secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-wpf: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Wpf solution-path: PrismLibrary_Wpf.slnf code-sign: true artifact-name: Wpf build-args: /p:OfficialRelease=true secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-uno: uses: avantipoint/workflow-templates/.github/workflows/msbuild-build.yml@v1 with: name: Build Prism.Uno solution-path: PrismLibrary_Uno.slnf windows-sdk-version: 18362 dotnet-version: 8.0.300 install-workload: ios android macos maccatalyst wasm-tools uno-check: false uno-check-version: 1.25.1 uno-check-parameters: '--skip xcode --skip gtk3 --skip vswin --skip androidemulator --skip androidsdk --skip vsmac --skip dotnetnewunotemplates' run-tests: false code-sign: true artifact-name: Uno build-args: /p:OfficialRelease=true secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} build-prism-maui: uses: avantipoint/workflow-templates/.github/workflows/dotnet-build.yml@v1 with: name: Build Prism.Maui solution-path: PrismLibrary_Maui.slnf dotnet-version: 8.0.x install-workload: maui maui-tizen code-sign: true artifact-name: Maui build-args: /p:OfficialRelease=true secrets: codeSignKeyVault: ${{ secrets.CodeSignKeyVault }} codeSignClientId: ${{ secrets.CodeSignClientId }} codeSignTenantId: ${{ secrets.CodeSignTenantId }} codeSignClientSecret: ${{ secrets.CodeSignClientSecret }} codeSignCertificate: ${{ secrets.CodeSignCertificate }} generate-consolidated-artifacts: needs: [build-prism-core, build-prism-wpf, build-prism-uno] runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Download Core uses: actions/download-artifact@v3 with: name: Core path: artifacts\Core - name: Download Wpf uses: actions/download-artifact@v3 with: name: Wpf path: artifacts\Wpf - name: Download Uno uses: actions/download-artifact@v3 with: name: Uno path: artifacts\Uno - name: Download Maui uses: actions/download-artifact@v3 with: name: Maui path: artifacts\Maui - name: Consolidate Artifacts run: build\consolidate-artifacts.ps1 shell: powershell - name: Upload Consolidated NuGets uses: actions/upload-artifact@v3 with: name: NuGet path: .\artifacts\nuget release: uses: avantipoint/workflow-templates/.github/workflows/generate-release.yml@v1 needs: [generate-consolidated-artifacts] permissions: contents: write with: package-name: Prism.Core ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.sln.docstates # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ # build/ bld/ [Bb]in/ [Oo]bj/ # Visual Studio cache/options directory .vs/ .droidres/ # DNX artifacts/ # Roslyn cache directories *.ide/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* #NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opensdf *.sdf *.cachefile # Visual Studio profiler *.psess *.vsp *.vspx # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding addin-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch _NCrunch_* .*crunch*.local.xml # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # NuGet .nuget/ nuget.exe *.nuget.props *.nuget.targets *.lock.json # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # If using the old MSBuild-Integrated Package Restore, uncomment this: #!**/packages/repositories.config # Windows Azure Build Output csx/ *.build.csdef # Windows Store app package directory AppPackages/ BundleArtifacts/ # Others sql/ *.Cache ClientBin/ [Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.dbproj.schemaview # *.pfx *.publishsettings node_modules/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # DotNet Tools **/build/.store/* # MFractor .mfractor/ # Jetbrains files .idea* # Binlog *.binlog # macOS .DS_Store # VSCode .mono ================================================ FILE: .vscode/extensions.json ================================================ { "recommendations": [ "ms-dotnettools.csharp", "ms-vscode.powershell", "editorconfig.editorconfig", "shd101wyy.markdown-preview-enhanced", "streetsidesoftware.code-spell-checker", "unoplatform.vscode" ] } ================================================ FILE: .vscode/launch.json ================================================ { // Use IntelliSense to find out which attributes exist for C# debugging // Use hover for the description of the existing attributes // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md "version": "0.2.0", "configurations": [ { "name": "Uno Platform Mobile", "type": "Uno", "request": "launch", // any Uno* task will do, this is simply to satisfy vscode requirement when a launch.json is present "preLaunchTask": "Uno: android | Debug | android-x64" }, { // Use IntelliSense to find out which attributes exist for C# debugging // Use hover for the description of the existing attributes // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md "name": "Debug (Chrome, WebAssembly)", "type": "chrome", "request": "launch", "url": "http://localhost:5001", "webRoot": "${workspaceFolder}/e2e/Uno/HelloWorld.Wasm", "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", "timeout": 30000, "server": { "runtimeExecutable": "dotnet", "program": "run", "args": ["--no-build"], "outputCapture": "std", "timeout": 30000, "cwd": "${workspaceFolder}/e2e/Uno/HelloWorld.Wasm" } }, { // Use IntelliSense to find out which attributes exist for C# debugging // Use hover for the description of the existing attributes // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md "name": "Skia.GTK (Debug)", "type": "coreclr", "request": "launch", "preLaunchTask": "build-skia-gtk", // If you have changed target frameworks, make sure to update the program path. "program": "${workspaceFolder}/e2e/Uno/HelloWorld.Skia.Gtk/bin/Debug/net8.0/HelloWorld.Skia.Gtk.dll", "args": [], "env": { "DOTNET_MODIFIABLE_ASSEMBLIES": "debug" }, "cwd": "${workspaceFolder}/e2e/Uno/HelloWorld.Skia.Gtk", // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console "console": "internalConsole", "stopAtEntry": false } ] } ================================================ FILE: .vscode/settings.json ================================================ { "explorer.fileNesting.enabled": true, "explorer.fileNesting.expand": false, "explorer.fileNesting.patterns": { "*.xaml": "$(capture).xaml.cs", "*.ts": "${capture}.js", "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts", "*.jsx": "${capture}.js", "*.tsx": "${capture}.ts", "tsconfig.json": "tsconfig.*.json", "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml" }, "[azure-pipelines]": { "editor.insertSpaces": true, "editor.tabSize": 2, "editor.quickSuggestions": { "other": true, "comments": false, "strings": true }, "editor.autoIndent": "full" }, "[cschleiden.vscode-github-actions]": { "editor.insertSpaces": true, "editor.tabSize": 2, "editor.quickSuggestions": { "other": true, "comments": false, "strings": true }, "editor.autoIndent": "full" }, "files.associations": { ".github/**/*.yml": "cschleiden.vscode-github-actions" } } ================================================ FILE: .vscode/tasks.json ================================================ { "version": "2.0.0", "tasks": [ { "label": "build-wasm", "command": "dotnet", "type": "process", "args": [ "build", "${workspaceFolder}/e2e/Uno/HelloWorld.Wasm/HelloWorld.Wasm.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" }, { "label": "publish-wasm", "command": "dotnet", "type": "process", "args": [ "publish", "${workspaceFolder}/e2e/Uno/HelloWorld.Wasm/HelloWorld.Wasm.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" }, { "label": "build-skia-gtk", "command": "dotnet", "type": "process", "args": [ "build", "${workspaceFolder}/e2e/Uno/HelloWorld.Skia.Gtk/HelloWorld.Skia.Gtk.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" }, { "label": "publish-skia-gtk", "command": "dotnet", "type": "process", "args": [ "publish", "${workspaceFolder}/e2e/Uno/HelloWorld.Skia.Gtk/HelloWorld.Skia.Gtk.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" } ] } ================================================ FILE: Clean-Outputs.ps1 ================================================ Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } Get-ChildItem .\ -include .mfractor -Attributes Hidden -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } Get-ChildItem .\ -include .vs -Attributes Hidden -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } Get-ChildItem .\ -include *.csproj.user -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } ================================================ FILE: CodeCoverage.runsettings ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- File name extension must be .runsettings --> <RunSettings> <DataCollectionRunSettings> <DataCollectors> <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <Configuration> <CodeCoverage> <!-- About include/exclude lists: Empty "Include" clauses imply all; empty "Exclude" clauses imply none. Each element in the list is a regular expression (ECMAScript syntax). See http://msdn.microsoft.com/library/2k3te2cs.aspx. An item must first match at least one entry in the include list to be included. Included items must then not match any entries in the exclude list to remain included. --> <!-- Match assembly file paths: --> <ModulePaths> <Include> <ModulePath>.*Prism.*\.dll$</ModulePath> </Include> <Exclude> <ModulePath>.*Tests.*</ModulePath> </Exclude> </ModulePaths> </CodeCoverage> </Configuration> </DataCollector> </DataCollectors> </DataCollectionRunSettings> </RunSettings> ================================================ FILE: Directory.Build.props ================================================ <Project> <PropertyGroup> <NeutralLanguage>en</NeutralLanguage> <Authors>Brian Lagunas;Dan Siegel</Authors> <PackageProjectUrl>https://github.com/PrismLibrary/Prism</PackageProjectUrl> <PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageIcon>prism-logo.png</PackageIcon> <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> <RepositoryType>git</RepositoryType> <RepositoryUrl>https://github.com/PrismLibrary/Prism</RepositoryUrl> <IncludeSymbols>True</IncludeSymbols> <IncludeSource>True</IncludeSource> <PackageOutputPath>$(MSBuildThisFileDirectory)Artifacts</PackageOutputPath> <EscapedCurrentDirectory>$([System.Text.RegularExpressions.Regex]::Escape('$(MSBuildThisFileDirectory)'))</EscapedCurrentDirectory> <RelativeProjectPath>$([System.Text.RegularExpressions.Regex]::Replace('$(MSBuildProjectFullPath)', '$(EscapedCurrentDirectory)', ''))</RelativeProjectPath> <PrismPackageIcon>$(MSBuildThisFileDirectory)images/prism-logo.png</PrismPackageIcon> <PrismLicenseFile>$(MSBuildThisFileDirectory)LICENSE</PrismLicenseFile> <LangVersion>latest</LangVersion> <PolySharpIncludeGeneratedTypes> System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute; System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes; System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute; System.Runtime.CompilerServices.IsExternalInit; </PolySharpIncludeGeneratedTypes> <WarningsAsErrors>$(WarningsAsErrors);IDE0003</WarningsAsErrors> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <PropertyGroup> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> <NoWarn>$(NoWarn);NU5104;NU5100;NU5118;NU5123;NU1603;CS1701;CS1702;XA0101;MSB3277;CS8785;CS8669;CS1998;NU1507</NoWarn> <IsCoreProject>false</IsCoreProject> <IsCoreProject Condition=" $(MSBuildProjectName.Equals('Prism.Core')) OR $(MSBuildProjectName.Equals('Prism.Events'))">true</IsCoreProject> <IsTestProject>$(MSBuildProjectName.Contains('Test'))</IsTestProject> <IsWpfProject>$(MSBuildProjectName.Contains('Wpf'))</IsWpfProject> <IsUnoProject>$(MSBuildProjectName.Contains('Uno'))</IsUnoProject> <IsFormsProject>$(MSBuildProjectName.Contains('Forms'))</IsFormsProject> <IsMauiProject>$(MSBuildProjectName.Contains('Maui'))</IsMauiProject> <IsAvaloniaProject>$(MSBuildProjectName.Contains('Avalonia'))</IsAvaloniaProject> <SignAssembly Condition=" ('$(IsCoreProject)' Or '$(IsWpfProject)') ">True</SignAssembly> <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)prism.snk</AssemblyOriginatorKeyFile> <DelaySign>False</DelaySign> <DisableCorePublish Condition=" '$(DisableCorePublish)' == '' ">false</DisableCorePublish> <DisableWpfPublish Condition=" '$(DisableWpfPublish)' == '' ">false</DisableWpfPublish> <DisableFormsPublish Condition=" '$(DisableFormsPublish)' == '' ">false</DisableFormsPublish> <DisableUnoPublish Condition=" '$(DisableUnoPublish)' == '' ">false</DisableUnoPublish> <IsPackable>false</IsPackable> <PackageTags Condition=" '$(IsCoreProject)' == 'True' ">prism;wpf;xamarin;xaml</PackageTags> <PackageTags Condition=" '$(IsWpfProject)' == 'True' ">prism;mvvm;wpf;dependency injection;di</PackageTags> <PackageTags Condition=" '$(IsUnoProject)' == 'True' ">prism;mvvm;winui;uno-platform;xamarin;webassembly;android;ios;macos;dependency injection;di</PackageTags> <PackageTags Condition=" '$(IsFormsProject)' == 'True' ">prism;mvvm;uwp;android;ios;xamarin;xamarin.forms;dependency injection;di</PackageTags> <PackageTags Condition=" '$(IsAvaloniaProject)' == 'True' ">prism;mvvm;axaml;xaml;desktop;navigation;prismavalonia;dialog;linux;macos;avalonia;dependency injection;di</PackageTags> <IS_PREVIEW Condition=" '$(IS_PREVIEW)' == '' ">false</IS_PREVIEW> <IS_RELEASE Condition=" '$(IS_RELEASE)' == '' ">false</IS_RELEASE> <UseWpf>$(IsWpfProject)</UseWpf> <UseMaui>$(IsMauiProject)</UseMaui> <MSBuildSdkExtrasVersion>3.0.44</MSBuildSdkExtrasVersion> </PropertyGroup> <!-- --> <Choose> <When Condition="$(IsWpfProject)"> <PropertyGroup> <DefineConstants>$(DefineConstants);WPF</DefineConstants> </PropertyGroup> <ItemGroup> <Using Include="System.Windows" /> <Using Include="System.Windows.Controls" /> <Using Include="System.Windows.Controls.Primitives" /> <Using Include="System.Windows.Data" /> </ItemGroup> </When> <When Condition="$(IsUnoProject)"> <PropertyGroup> <DefineConstants>$(DefineConstants);UNO_WINUI</DefineConstants> <DefineConstants Condition="!$(TargetFramework.Contains('-')) OR $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'browser'">$(DefineConstants);UNO_WASM</DefineConstants> </PropertyGroup> <ItemGroup> <Using Include="Microsoft.UI.Xaml" /> <Using Include="Microsoft.UI.Xaml.Controls" /> <Using Include="Microsoft.UI.Xaml.Controls.Primitives" /> <Using Include="Microsoft.UI.Xaml.Data" /> <Using Include="Microsoft.UI.Xaml.Media" /> </ItemGroup> </When> <When Condition="$(IsAvaloniaProject)"> <PropertyGroup> <DefineConstants>$(DefineConstants);AVALONIA</DefineConstants> </PropertyGroup> <ItemGroup> <Using Include="Avalonia" /> <Using Include="Avalonia.Controls" /> <Using Include="Avalonia.Controls.ApplicationLifetimes" /> <Using Include="Avalonia.Controls.Primitives" /> <Using Include="Avalonia.Interactivity" /> <Using Include="Avalonia.Markup.Xaml" /> <Using Include="Avalonia.Controls.Control" Alias="FrameworkElement" /> <Using Include="Avalonia.AvaloniaObject" Alias="DependencyObject" /> <Using Include="Avalonia.AvaloniaPropertyChangedEventArgs" Alias="DependencyPropertyChangedEventArgs" /> </ItemGroup> </When> </Choose> <!-- Versioning --> <PropertyGroup> <PackageReleaseNotes Condition="$(OfficialRelease) == 'true'">https://github.com/PrismLibrary/Prism/releases/tag/$(Version)</PackageReleaseNotes> </PropertyGroup> <PropertyGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) "> <DefineConstants>$(DefineConstants);__ANDROID__</DefineConstants> </PropertyGroup> <Choose> <When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'"> <PropertyGroup> <SupportedOSPlatformVersion>21.0</SupportedOSPlatformVersion> </PropertyGroup> </When> <When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'"> <PropertyGroup> <SupportedOSPlatformVersion>14.2</SupportedOSPlatformVersion> </PropertyGroup> </When> <When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'macos'"> <PropertyGroup> <SupportedOSPlatformVersion>10.14</SupportedOSPlatformVersion> </PropertyGroup> </When> <When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'"> <PropertyGroup> <SupportedOSPlatformVersion>14.0</SupportedOSPlatformVersion> </PropertyGroup> </When> <When Condition="$(TargetFramework.Contains('windows10'))"> <PropertyGroup> <UseRidGraph>true</UseRidGraph> <SupportedOSPlatformVersion>10.0.18362.0</SupportedOSPlatformVersion> <TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion> </PropertyGroup> </When> </Choose> <ItemGroup> <None Include="build\Package.props" Pack="true" PackagePath="buildTransitive\$(PackageId).props" Condition="exists('build\Package.props')"/> <None Include="build\Package.targets" Pack="true" PackagePath="buildTransitive\$(PackageId).targets" Condition="exists('build\Package.targets')"/> </ItemGroup> <ItemGroup Condition=" $(IsTestProject) "> <None Include="$(MSBuildThisFileDirectory)xunit.runner.json" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> <ItemGroup Condition=" $(UseMaui) != 'true' "> <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup Condition=" $(DISABLE_GITVERSIONING) != 'true' "> <PackageReference Include="Nerdbank.GitVersioning" Condition=" !$(MSBuildProjectDirectory.Contains('e2e')) "> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup Condition=" $(IsPackable) "> <PackageReference Include="Microsoft.SourceLink.GitHub"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: Directory.Build.targets ================================================ <Project> <Import Project="winappsdk-workarounds.targets" Condition=" $(IsUnoProject) == 'true' " /> <PropertyGroup> <Product>$(AssemblyName) ($(TargetFramework))</Product> </PropertyGroup> <PropertyGroup Condition=" $(IsPackable) "> <!-- Nuget source link --> <SymbolPackageFormat>snupkg</SymbolPackageFormat> <PublishRepositoryUrl>true</PublishRepositoryUrl> <EmbedUntrackedSources>true</EmbedUntrackedSources> <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder> </PropertyGroup> </Project> ================================================ FILE: Directory.Packages.props ================================================ <Project> <ItemGroup> <PackageVersion Include="PolySharp" Version="1.14.1" /> <PackageVersion Include="Prism.Container.Abstractions" Version="9.0.114" /> <PackageVersion Include="Prism.Container.DryIoc" Version="9.0.114" /> <PackageVersion Include="Prism.Container.Unity" Version="9.0.114" /> <PackageVersion Include="System.ValueTuple" Version="4.5.0" /> <PackageVersion Include="System.Reactive" Version="6.0.1" /> <PackageVersion Include="Xamarin.Forms" Version="5.0.0.2401" /> <PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.122" /> </ItemGroup> <!-- Maui --> <!--<ItemGroup Condition=" $(UseMaui) == 'true' "> <PackageVersion Include="Microsoft.Maui.Controls" Version="9.0.110" Condition="$(MSBuildProjectName.StartsWith('Prism.')) AND $(TargetFramework.StartsWith('net9.0'))" /> <PackageVersion Include="Microsoft.Maui.Controls" Version="10.0.10" Condition="$(MSBuildProjectName.StartsWith('Prism.')) AND $(TargetFramework.StartsWith('net10.0'))" /> <PackageVersion Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" Condition="!$(MSBuildProjectName.StartsWith('Prism.'))" /> </ItemGroup>--> <!-- Uno Note that the $(UnoVersion) comes from the Uno.Sdk. You should not update it manually. To update the version of Uno, you should instead update the Sdk version in the global.json file. See https://aka.platform.uno/upgrade-uno-packages for more information. --> <ItemGroup Condition=" $(IsUnoProject) == 'true' "> <PackageVersion Include="Uno.Extensions.Markup.Generators" Version="6.4.11" /> <PackageVersion Include="Uno.WinUI.Markup" Version="6.4.11" /> <PackageVersion Include="Uno.WinUI" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.WinUI.Lottie" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.WinUI.Skia.Gtk" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.WinUI.Skia.Linux.FrameBuffer" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.WinUI.Skia.Wpf" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.Wasm.Bootstrap" Version="9.0.20" /> <PackageVersion Include="Uno.Wasm.Bootstrap.DevServer" Version="9.0.20" /> <PackageVersion Include="Uno.WinUI.WebAssembly" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.WinUI.DevServer" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.UI.Adapter.Microsoft.Extensions.Logging" Version="$(UnoVersion)" /> <PackageVersion Include="Uno.Core.Extensions.Logging.Singleton" Version="4.1.1" /> <PackageVersion Include="Uno.Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.4.2" /> <PackageVersion Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" /> <PackageVersion Include="Microsoft.WindowsAppSDK" Version="1.2.221109.1" Condition="$(MSBuildProjectName.Contains('Prism'))" /> <PackageVersion Include="Microsoft.WindowsAppSDK" Version="1.7.250909003" Condition="!$(MSBuildProjectName.Contains('Prism'))" /> <PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.6901" /> <PackageVersion Include="SkiaSharp.Views.Uno.WinUI" Version="3.119.1" /> <PackageVersion Include="SkiaSharp.Skottie" Version="3.119.1" /> <PackageVersion Include="Uno.Resizetizer" Version="1.12.1" /> <PackageVersion Include="Uno.Extensions.Logging.OSLog" Version="1.7.0" /> <PackageVersion Include="Uno.Extensions.Logging.WinUI" Version="7.0.4" /> <PackageVersion Include="Uno.Extensions.Logging.Serilog" Version="7.0.4" /> <PackageVersion Include="Uno.Extensions.Logging.WebAssembly.Console" Version="1.7.0" /> <PackageVersion Include="Uno.Material.WinUI" Version="6.0.2" /> <PackageVersion Include="Uno.Toolkit.WinUI.Material" Version="8.3.2" /> <PackageVersion Include="Uno.Toolkit.WinUI" Version="8.3.2" /> <PackageVersion Include="Uno.Extensions.Hosting.WinUI" Version="7.0.4" /> <PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" /> <PackageVersion Include="Xamarin.Google.Android.Material" Version="1.12.0.4" /> <PackageVersion Include="Xamarin.Google.Android.Material" Version="1.12.0.5" Condition="$(TargetFramework.StartsWith('net10.0'))" /> <PackageVersion Include="Uno.UniversalImageLoader" Version="1.9.37" /> <PackageVersion Include="Microsoft.Windows.Compatibility" Version="8.0.0" /> </ItemGroup> <!-- Avalonia --> <ItemGroup Condition=" $(IsAvaloniaProject) == 'true' "> <PackageVersion Include="Avalonia" Version="11.3.8" /> <PackageVersion Include="Avalonia.Desktop" Version="11.3.8" /> <PackageVersion Include="Avalonia.Diagnostics" Version="11.3.8" /> <PackageVersion Include="Avalonia.LinuxFramebuffer" Version="11.3.8" /> <PackageVersion Include="Avalonia.Markup.Xaml.Loader" Version="11.3.8" /> <PackageVersion Include="Avalonia.Themes.Simple" Version="11.3.8" /> <PackageVersion Include="Avalonia.Themes.Fluent" Version="11.3.8" /> <PackageVersion Include="Avalonia.Fonts.Inter" Version="11.3.8" /> <PackageVersion Include="System.Configuration.ConfigurationManager" Version="10.0.0" /> <PackageVersion Include="System.CodeDom" Version="8.0.0" /> </ItemGroup> <!-- Tests --> <ItemGroup> <PackageVersion Include="coverlet.collector" Version="6.0.2" /> <PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" /> <PackageVersion Include="Xamarin.Forms.Mocks" Version="4.7.0.1" /> <PackageVersion Include="Humanizer.Core" Version="2.14.1" /> <PackageVersion Include="Newtonsoft.Json" Version="13.0.1" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" /> <PackageVersion Include="Moq" Version="4.20.70" /> <PackageVersion Include="xunit" Version="2.9.0" /> <PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" /> <PackageVersion Include="Xunit.StaFact" Version="1.1.11" /> </ItemGroup> <ItemGroup Condition=" $(UseMaui) != 'true' "> <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageVersion Include="Microsoft.Extensions.Logging" Version="7.0.0" /> </ItemGroup> <!-- UI Tests --> <ItemGroup> <PackageVersion Include="Uno.UITest.Helpers" Version="1.0.0" /> <PackageVersion Include="Xamarin.TestCloud.Agent" Version="0.22.2" /> <PackageVersion Include="NUnit" Version="3.13.2" /> <PackageVersion Include="NUnit3TestAdapter" Version="3.17.0" /> <PackageVersion Include="Xamarin.UITest" Version="3.0.12" /> </ItemGroup> <ItemGroup> <!-- Global Packages --> <PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" /> <PackageVersion Include="Nerdbank.GitVersioning" Version="3.9.50" /> <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" /> </ItemGroup> </Project> ================================================ FILE: LICENSE ================================================ Prism can be licensed either under the Prism Community License or the Prism Commercial license. To be qualified for the Prism Community License you must have an annual gross revenue of less than one (1) million U.S. dollars ($1,000,000.00 USD) per year or have never received more than $3 million USD in capital from an outside source, such as private equity or venture capital, and agree to be bound by Prism's terms and conditions. Customers who do not qualify for the community license can visit the Prism Library website (https://prismlibrary.com/) for commercial licensing options. Under no circumstances can you use this product without (1) either a Community License or a Commercial License and (2) without agreeing and abiding by Prism's license containing all terms and conditions. The Prism license that contains the terms and conditions can be found at https://cdn.prismlibrary.com/downloads/prism_license.pdf ================================================ FILE: PrismLibrary.sln ================================================ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.4.33213.308 MinimumVisualStudioVersion = 15.0.26124.0 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3}" ProjectSection(SolutionItems) = preProject src\Directory.Build.props = src\Directory.Build.props src\Directory.Build.targets = src\Directory.Build.targets EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Core", "src\Prism.Core\Prism.Core.csproj", "{F634CA1E-9237-4E69-B23C-91AA6FBCABFF}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{00FFDC13-7397-46F1-897E-A62A7575D28A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Core.Tests", "tests\Prism.Core.Tests\Prism.Core.Tests.csproj", "{8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wpf", "Wpf", "{C2BA93F6-D2E1-455F-B9FA-6221D087295E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Wpf", "src\Wpf\Prism.Wpf\Prism.Wpf.csproj", "{CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Wpf", "src\Wpf\Prism.DryIoc.Wpf\Prism.DryIoc.Wpf.csproj", "{0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Unity.Wpf", "src\Wpf\Prism.Unity.Wpf\Prism.Unity.Wpf.csproj", "{E9A2458B-999D-4D36-822F-663D3830575A}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wpf", "Wpf", "{F1F91777-01EA-43A3-A3ED-D473B382F46C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Wpf.Tests", "tests\Wpf\Prism.Wpf.Tests\Prism.Wpf.Tests.csproj", "{C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Wpf.Tests", "tests\Wpf\Prism.DryIoc.Wpf.Tests\Prism.DryIoc.Wpf.Tests.csproj", "{BA05687E-2317-4A65-805B-C596F52F7203}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Unity.Wpf.Tests", "tests\Wpf\Prism.Unity.Wpf.Tests\Prism.Unity.Wpf.Tests.csproj", "{367BE810-5B34-4894-BE47-1C8DCC67DE81}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.IocContainer.Wpf.Tests.Support", "tests\Wpf\Prism.IocContainer.Wpf.Tests.Support\Prism.IocContainer.Wpf.Tests.Support.csproj", "{2E8F565D-9D13-424E-BD86-C5A362F9AAE7}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{10DFE0CA-4F29-4859-B60F-94073D43FB51}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .gitignore = .gitignore CodeCoverage.runsettings = CodeCoverage.runsettings Directory.Build.props = Directory.Build.props Directory.build.targets = Directory.build.targets Directory.Packages.props = Directory.Packages.props global.json = global.json xunit.runner.json = xunit.runner.json EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Uno", "Uno", "{8F959801-D494-4CAF-9437-90F30472E169}" EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Prism.Container.Wpf.Shared", "tests\Wpf\Prism.Container.Wpf.Shared\Prism.Container.Wpf.Shared.shproj", "{BD42A7D6-A84D-4D27-9C28-7F6A2EC477F1}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Uno.WinUI", "src\Uno\Prism.Uno\Prism.Uno.WinUI.csproj", "{E74664C1-1BB1-4920-8099-2C9125CFD00B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Uno.WinUI", "src\Uno\Prism.DryIoc.Uno\Prism.DryIoc.Uno.WinUI.csproj", "{DB530D15-0556-4B6F-96B2-1497C8DF08D6}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Maui", "Maui", "{24639CEB-266D-40E1-B0A8-B78BB6F8CEF8}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Maui", "src\Maui\Prism.Maui\Prism.Maui.csproj", "{BC84ABD6-A230-4367-8E6A-85B6BA1D851A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Maui.Rx", "src\Maui\Prism.Maui.Rx\Prism.Maui.Rx.csproj", "{D7B41D0E-CBE4-4846-992F-C955CE45DC08}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Maui", "src\Maui\Prism.DryIoc.Maui\Prism.DryIoc.Maui.csproj", "{60D92138-66AC-4DC9-973D-FDD917F87112}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Maui", "Maui", "{540CEEC1-D541-4614-BF0B-18056A83E434}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Maui.Tests", "tests\Maui\Prism.Maui.Tests\Prism.Maui.Tests.csproj", "{7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Maui.Tests", "tests\Maui\Prism.DryIoc.Maui.Tests\Prism.DryIoc.Maui.Tests.csproj", "{8711D306-1118-4A11-9399-EF14AA13015E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Events", "src\Prism.Events\Prism.Events.csproj", "{8610485A-BE9F-4938-86D4-E9F1FA1739A0}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Uno.WinUI.Markup", "src\Uno\Prism.Uno.Markup\Prism.Uno.WinUI.Markup.csproj", "{0EA416B6-0AB6-464B-9F4D-206FFCFB262D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Avalonia", "Avalonia", "{8AE1015F-4D62-47EF-A576-2F7411EC20D5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Avalonia", "src\Avalonia\Prism.Avalonia\Prism.Avalonia.csproj", "{C505C63F-99E6-464F-8C83-1AE4239C19B1}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Avalonia", "src\Avalonia\Prism.DryIoc.Avalonia\Prism.DryIoc.Avalonia.csproj", "{A6B7B19C-3288-4CD2-A737-527BEB1ED807}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Avalonia.Tests", "tests\Avalonia\Prism.Avalonia.Tests\Prism.Avalonia.Tests.csproj", "{AB501F63-8E8C-4333-8A15-81BA02F3C703}" EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Prism.Container.Avalonia.Shared", "tests\Avalonia\Prism.Container.Avalonia.Shared\Prism.Container.Avalonia.Shared.shproj", "{6FDA7D49-DF44-4E8F-A182-0EB73DD3C452}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Avalonia.Tests", "tests\Avalonia\Prism.DryIoc.Avalonia.Tests\Prism.DryIoc.Avalonia.Tests.csproj", "{03B9C775-9582-409F-B67F-6B8A0CE0C7AF}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.IocContainer.Avalonia.Tests.Support", "tests\Avalonia\Prism.IocContainer.Avalonia.Tests.Support\Prism.IocContainer.Avalonia.Tests.Support.csproj", "{887E0794-798D-4127-847E-6F68D5C9B334}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Avalonia", "Avalonia", "{904D5094-55F9-4581-90AC-D6C1131F8152}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Debug|Any CPU.Build.0 = Debug|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Debug|x64.ActiveCfg = Debug|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Debug|x64.Build.0 = Debug|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Debug|x86.ActiveCfg = Debug|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Debug|x86.Build.0 = Debug|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Release|Any CPU.ActiveCfg = Release|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Release|Any CPU.Build.0 = Release|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Release|x64.ActiveCfg = Release|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Release|x64.Build.0 = Release|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Release|x86.ActiveCfg = Release|Any CPU {F634CA1E-9237-4E69-B23C-91AA6FBCABFF}.Release|x86.Build.0 = Release|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Debug|Any CPU.Build.0 = Debug|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Debug|x64.ActiveCfg = Debug|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Debug|x64.Build.0 = Debug|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Debug|x86.ActiveCfg = Debug|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Debug|x86.Build.0 = Debug|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Release|Any CPU.Build.0 = Release|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Release|x64.ActiveCfg = Release|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Release|x64.Build.0 = Release|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Release|x86.ActiveCfg = Release|Any CPU {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A}.Release|x86.Build.0 = Release|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Debug|Any CPU.Build.0 = Debug|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Debug|x64.ActiveCfg = Debug|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Debug|x64.Build.0 = Debug|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Debug|x86.ActiveCfg = Debug|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Debug|x86.Build.0 = Debug|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Release|Any CPU.Build.0 = Release|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Release|x64.ActiveCfg = Release|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Release|x64.Build.0 = Release|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Release|x86.ActiveCfg = Release|Any CPU {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF}.Release|x86.Build.0 = Release|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Debug|Any CPU.Build.0 = Debug|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Debug|x64.ActiveCfg = Debug|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Debug|x64.Build.0 = Debug|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Debug|x86.ActiveCfg = Debug|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Debug|x86.Build.0 = Debug|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Release|Any CPU.Build.0 = Release|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Release|x64.ActiveCfg = Release|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Release|x64.Build.0 = Release|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Release|x86.ActiveCfg = Release|Any CPU {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2}.Release|x86.Build.0 = Release|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Debug|x64.ActiveCfg = Debug|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Debug|x64.Build.0 = Debug|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Debug|x86.ActiveCfg = Debug|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Debug|x86.Build.0 = Debug|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Release|Any CPU.Build.0 = Release|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Release|x64.ActiveCfg = Release|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Release|x64.Build.0 = Release|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Release|x86.ActiveCfg = Release|Any CPU {E9A2458B-999D-4D36-822F-663D3830575A}.Release|x86.Build.0 = Release|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Debug|Any CPU.Build.0 = Debug|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Debug|x64.ActiveCfg = Debug|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Debug|x64.Build.0 = Debug|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Debug|x86.ActiveCfg = Debug|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Debug|x86.Build.0 = Debug|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Release|Any CPU.ActiveCfg = Release|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Release|Any CPU.Build.0 = Release|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Release|x64.ActiveCfg = Release|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Release|x64.Build.0 = Release|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Release|x86.ActiveCfg = Release|Any CPU {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA}.Release|x86.Build.0 = Release|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Debug|Any CPU.Build.0 = Debug|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Debug|x64.ActiveCfg = Debug|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Debug|x64.Build.0 = Debug|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Debug|x86.ActiveCfg = Debug|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Debug|x86.Build.0 = Debug|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Release|Any CPU.ActiveCfg = Release|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Release|Any CPU.Build.0 = Release|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Release|x64.ActiveCfg = Release|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Release|x64.Build.0 = Release|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Release|x86.ActiveCfg = Release|Any CPU {BA05687E-2317-4A65-805B-C596F52F7203}.Release|x86.Build.0 = Release|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Debug|Any CPU.Build.0 = Debug|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Debug|x64.ActiveCfg = Debug|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Debug|x64.Build.0 = Debug|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Debug|x86.ActiveCfg = Debug|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Debug|x86.Build.0 = Debug|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Release|Any CPU.ActiveCfg = Release|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Release|Any CPU.Build.0 = Release|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Release|x64.ActiveCfg = Release|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Release|x64.Build.0 = Release|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Release|x86.ActiveCfg = Release|Any CPU {367BE810-5B34-4894-BE47-1C8DCC67DE81}.Release|x86.Build.0 = Release|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Debug|x64.ActiveCfg = Debug|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Debug|x64.Build.0 = Debug|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Debug|x86.ActiveCfg = Debug|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Debug|x86.Build.0 = Debug|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Release|Any CPU.Build.0 = Release|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Release|x64.ActiveCfg = Release|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Release|x64.Build.0 = Release|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Release|x86.ActiveCfg = Release|Any CPU {2E8F565D-9D13-424E-BD86-C5A362F9AAE7}.Release|x86.Build.0 = Release|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Debug|Any CPU.Build.0 = Debug|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Debug|x64.ActiveCfg = Debug|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Debug|x64.Build.0 = Debug|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Debug|x86.ActiveCfg = Debug|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Debug|x86.Build.0 = Debug|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Release|Any CPU.ActiveCfg = Release|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Release|Any CPU.Build.0 = Release|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Release|x64.ActiveCfg = Release|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Release|x64.Build.0 = Release|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Release|x86.ActiveCfg = Release|Any CPU {E74664C1-1BB1-4920-8099-2C9125CFD00B}.Release|x86.Build.0 = Release|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Debug|Any CPU.Build.0 = Debug|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Debug|x64.ActiveCfg = Debug|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Debug|x64.Build.0 = Debug|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Debug|x86.ActiveCfg = Debug|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Debug|x86.Build.0 = Debug|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Release|Any CPU.ActiveCfg = Release|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Release|Any CPU.Build.0 = Release|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Release|x64.ActiveCfg = Release|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Release|x64.Build.0 = Release|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Release|x86.ActiveCfg = Release|Any CPU {DB530D15-0556-4B6F-96B2-1497C8DF08D6}.Release|x86.Build.0 = Release|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Debug|Any CPU.Build.0 = Debug|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Debug|x64.ActiveCfg = Debug|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Debug|x64.Build.0 = Debug|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Debug|x86.ActiveCfg = Debug|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Debug|x86.Build.0 = Debug|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Release|Any CPU.Build.0 = Release|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Release|x64.ActiveCfg = Release|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Release|x64.Build.0 = Release|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Release|x86.ActiveCfg = Release|Any CPU {BC84ABD6-A230-4367-8E6A-85B6BA1D851A}.Release|x86.Build.0 = Release|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Debug|Any CPU.Build.0 = Debug|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Debug|x64.ActiveCfg = Debug|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Debug|x64.Build.0 = Debug|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Debug|x86.ActiveCfg = Debug|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Debug|x86.Build.0 = Debug|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Release|Any CPU.Build.0 = Release|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Release|x64.ActiveCfg = Release|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Release|x64.Build.0 = Release|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Release|x86.ActiveCfg = Release|Any CPU {D7B41D0E-CBE4-4846-992F-C955CE45DC08}.Release|x86.Build.0 = Release|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Debug|Any CPU.Build.0 = Debug|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Debug|x64.ActiveCfg = Debug|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Debug|x64.Build.0 = Debug|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Debug|x86.ActiveCfg = Debug|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Debug|x86.Build.0 = Debug|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Release|Any CPU.ActiveCfg = Release|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Release|Any CPU.Build.0 = Release|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Release|x64.ActiveCfg = Release|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Release|x64.Build.0 = Release|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Release|x86.ActiveCfg = Release|Any CPU {60D92138-66AC-4DC9-973D-FDD917F87112}.Release|x86.Build.0 = Release|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Debug|Any CPU.Build.0 = Debug|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Debug|x64.ActiveCfg = Debug|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Debug|x64.Build.0 = Debug|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Debug|x86.ActiveCfg = Debug|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Debug|x86.Build.0 = Debug|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Release|Any CPU.Build.0 = Release|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Release|x64.ActiveCfg = Release|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Release|x64.Build.0 = Release|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Release|x86.ActiveCfg = Release|Any CPU {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7}.Release|x86.Build.0 = Release|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Debug|Any CPU.Build.0 = Debug|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Debug|x64.ActiveCfg = Debug|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Debug|x64.Build.0 = Debug|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Debug|x86.ActiveCfg = Debug|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Debug|x86.Build.0 = Debug|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Release|Any CPU.ActiveCfg = Release|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Release|Any CPU.Build.0 = Release|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Release|x64.ActiveCfg = Release|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Release|x64.Build.0 = Release|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Release|x86.ActiveCfg = Release|Any CPU {8711D306-1118-4A11-9399-EF14AA13015E}.Release|x86.Build.0 = Release|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Debug|Any CPU.Build.0 = Debug|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Debug|x64.ActiveCfg = Debug|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Debug|x64.Build.0 = Debug|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Debug|x86.ActiveCfg = Debug|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Debug|x86.Build.0 = Debug|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Release|Any CPU.ActiveCfg = Release|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Release|Any CPU.Build.0 = Release|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Release|x64.ActiveCfg = Release|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Release|x64.Build.0 = Release|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Release|x86.ActiveCfg = Release|Any CPU {8610485A-BE9F-4938-86D4-E9F1FA1739A0}.Release|x86.Build.0 = Release|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Debug|Any CPU.Build.0 = Debug|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Debug|x64.ActiveCfg = Debug|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Debug|x64.Build.0 = Debug|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Debug|x86.ActiveCfg = Debug|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Debug|x86.Build.0 = Debug|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Release|Any CPU.ActiveCfg = Release|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Release|Any CPU.Build.0 = Release|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Release|x64.ActiveCfg = Release|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Release|x64.Build.0 = Release|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Release|x86.ActiveCfg = Release|Any CPU {0EA416B6-0AB6-464B-9F4D-206FFCFB262D}.Release|x86.Build.0 = Release|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Debug|Any CPU.Build.0 = Debug|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Debug|x64.ActiveCfg = Debug|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Debug|x64.Build.0 = Debug|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Debug|x86.ActiveCfg = Debug|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Debug|x86.Build.0 = Debug|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Release|Any CPU.ActiveCfg = Release|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Release|Any CPU.Build.0 = Release|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Release|x64.ActiveCfg = Release|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Release|x64.Build.0 = Release|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Release|x86.ActiveCfg = Release|Any CPU {C505C63F-99E6-464F-8C83-1AE4239C19B1}.Release|x86.Build.0 = Release|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Debug|Any CPU.Build.0 = Debug|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Debug|x64.ActiveCfg = Debug|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Debug|x64.Build.0 = Debug|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Debug|x86.ActiveCfg = Debug|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Debug|x86.Build.0 = Debug|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Release|Any CPU.ActiveCfg = Release|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Release|Any CPU.Build.0 = Release|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Release|x64.ActiveCfg = Release|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Release|x64.Build.0 = Release|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Release|x86.ActiveCfg = Release|Any CPU {A6B7B19C-3288-4CD2-A737-527BEB1ED807}.Release|x86.Build.0 = Release|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Debug|Any CPU.Build.0 = Debug|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Debug|x64.ActiveCfg = Debug|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Debug|x64.Build.0 = Debug|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Debug|x86.ActiveCfg = Debug|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Debug|x86.Build.0 = Debug|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Release|Any CPU.ActiveCfg = Release|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Release|Any CPU.Build.0 = Release|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Release|x64.ActiveCfg = Release|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Release|x64.Build.0 = Release|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Release|x86.ActiveCfg = Release|Any CPU {AB501F63-8E8C-4333-8A15-81BA02F3C703}.Release|x86.Build.0 = Release|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Debug|Any CPU.Build.0 = Debug|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Debug|x64.ActiveCfg = Debug|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Debug|x64.Build.0 = Debug|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Debug|x86.ActiveCfg = Debug|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Debug|x86.Build.0 = Debug|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Release|Any CPU.ActiveCfg = Release|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Release|Any CPU.Build.0 = Release|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Release|x64.ActiveCfg = Release|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Release|x64.Build.0 = Release|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Release|x86.ActiveCfg = Release|Any CPU {03B9C775-9582-409F-B67F-6B8A0CE0C7AF}.Release|x86.Build.0 = Release|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Debug|Any CPU.Build.0 = Debug|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Debug|x64.ActiveCfg = Debug|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Debug|x64.Build.0 = Debug|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Debug|x86.ActiveCfg = Debug|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Debug|x86.Build.0 = Debug|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Release|Any CPU.ActiveCfg = Release|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Release|Any CPU.Build.0 = Release|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Release|x64.ActiveCfg = Release|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Release|x64.Build.0 = Release|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Release|x86.ActiveCfg = Release|Any CPU {887E0794-798D-4127-847E-6F68D5C9B334}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {F634CA1E-9237-4E69-B23C-91AA6FBCABFF} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3} {8D85E3BC-6DD8-4F71-93DA-ABE51252CA2A} = {00FFDC13-7397-46F1-897E-A62A7575D28A} {C2BA93F6-D2E1-455F-B9FA-6221D087295E} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3} {CE80554B-E37B-4B52-AA80-1F96DA1AC3EF} = {C2BA93F6-D2E1-455F-B9FA-6221D087295E} {0C8AAB85-387C-41D2-ABCE-BAFAF74B62B2} = {C2BA93F6-D2E1-455F-B9FA-6221D087295E} {E9A2458B-999D-4D36-822F-663D3830575A} = {C2BA93F6-D2E1-455F-B9FA-6221D087295E} {F1F91777-01EA-43A3-A3ED-D473B382F46C} = {00FFDC13-7397-46F1-897E-A62A7575D28A} {C4D210AF-C91E-4310-ADE5-881A7DFE8AAA} = {F1F91777-01EA-43A3-A3ED-D473B382F46C} {BA05687E-2317-4A65-805B-C596F52F7203} = {F1F91777-01EA-43A3-A3ED-D473B382F46C} {367BE810-5B34-4894-BE47-1C8DCC67DE81} = {F1F91777-01EA-43A3-A3ED-D473B382F46C} {2E8F565D-9D13-424E-BD86-C5A362F9AAE7} = {F1F91777-01EA-43A3-A3ED-D473B382F46C} {8F959801-D494-4CAF-9437-90F30472E169} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3} {BD42A7D6-A84D-4D27-9C28-7F6A2EC477F1} = {F1F91777-01EA-43A3-A3ED-D473B382F46C} {E74664C1-1BB1-4920-8099-2C9125CFD00B} = {8F959801-D494-4CAF-9437-90F30472E169} {DB530D15-0556-4B6F-96B2-1497C8DF08D6} = {8F959801-D494-4CAF-9437-90F30472E169} {24639CEB-266D-40E1-B0A8-B78BB6F8CEF8} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3} {BC84ABD6-A230-4367-8E6A-85B6BA1D851A} = {24639CEB-266D-40E1-B0A8-B78BB6F8CEF8} {D7B41D0E-CBE4-4846-992F-C955CE45DC08} = {24639CEB-266D-40E1-B0A8-B78BB6F8CEF8} {60D92138-66AC-4DC9-973D-FDD917F87112} = {24639CEB-266D-40E1-B0A8-B78BB6F8CEF8} {540CEEC1-D541-4614-BF0B-18056A83E434} = {00FFDC13-7397-46F1-897E-A62A7575D28A} {7A1E157F-D4CD-4E6B-9CE3-1894EB2A15A7} = {540CEEC1-D541-4614-BF0B-18056A83E434} {8711D306-1118-4A11-9399-EF14AA13015E} = {540CEEC1-D541-4614-BF0B-18056A83E434} {8610485A-BE9F-4938-86D4-E9F1FA1739A0} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3} {0EA416B6-0AB6-464B-9F4D-206FFCFB262D} = {8F959801-D494-4CAF-9437-90F30472E169} {8AE1015F-4D62-47EF-A576-2F7411EC20D5} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3} {C505C63F-99E6-464F-8C83-1AE4239C19B1} = {8AE1015F-4D62-47EF-A576-2F7411EC20D5} {A6B7B19C-3288-4CD2-A737-527BEB1ED807} = {8AE1015F-4D62-47EF-A576-2F7411EC20D5} {AB501F63-8E8C-4333-8A15-81BA02F3C703} = {904D5094-55F9-4581-90AC-D6C1131F8152} {6FDA7D49-DF44-4E8F-A182-0EB73DD3C452} = {904D5094-55F9-4581-90AC-D6C1131F8152} {03B9C775-9582-409F-B67F-6B8A0CE0C7AF} = {904D5094-55F9-4581-90AC-D6C1131F8152} {887E0794-798D-4127-847E-6F68D5C9B334} = {904D5094-55F9-4581-90AC-D6C1131F8152} {904D5094-55F9-4581-90AC-D6C1131F8152} = {00FFDC13-7397-46F1-897E-A62A7575D28A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C7433AE2-B1A0-4C1A-887E-5CAA7AAF67A6} EndGlobalSection GlobalSection(SharedMSBuildProjectFiles) = preSolution tests\Avalonia\Prism.Container.Avalonia.Shared\Prism.Container.Avalonia.Shared.projitems*{03b9c775-9582-409f-b67f-6b8a0ce0c7af}*SharedItemsImports = 5 tests\Wpf\Prism.Container.Wpf.Shared\Prism.Container.Wpf.Shared.projitems*{367be810-5b34-4894-be47-1c8dcc67de81}*SharedItemsImports = 5 tests\Avalonia\Prism.Container.Avalonia.Shared\Prism.Container.Avalonia.Shared.projitems*{6fda7d49-df44-4e8f-a182-0eb73dd3c452}*SharedItemsImports = 13 tests\Wpf\Prism.Container.Wpf.Shared\Prism.Container.Wpf.Shared.projitems*{ba05687e-2317-4a65-805b-c596f52f7203}*SharedItemsImports = 5 tests\Wpf\Prism.Container.Wpf.Shared\Prism.Container.Wpf.Shared.projitems*{bd42a7d6-a84d-4d27-9c28-7f6a2ec477f1}*SharedItemsImports = 13 EndGlobalSection EndGlobal ================================================ FILE: PrismLibrary_Avalonia.slnf ================================================ { "solution": { "path": "PrismLibrary.sln", "projects": [ "src\\Avalonia\\Prism.Avalonia\\Prism.Avalonia.csproj", "src\\Avalonia\\Prism.DryIoc.Avalonia\\Prism.DryIoc.Avalonia.csproj", "src\\Prism.Core\\Prism.Core.csproj", "src\\Prism.Events\\Prism.Events.csproj", "tests\\Avalonia\\Prism.Avalonia.Tests\\Prism.Avalonia.Tests.csproj", "tests\\Avalonia\\Prism.Container.Avalonia.Shared\\Prism.Container.Avalonia.Shared.shproj", "tests\\Avalonia\\Prism.DryIoc.Avalonia.Tests\\Prism.DryIoc.Avalonia.Tests.csproj", "tests\\Avalonia\\Prism.IocContainer.Avalonia.Tests.Support\\Prism.IocContainer.Avalonia.Tests.Support.csproj", "tests\\Prism.Core.Tests\\Prism.Core.Tests.csproj" ] } } ================================================ FILE: PrismLibrary_Core.slnf ================================================ { "solution": { "path": "PrismLibrary.sln", "projects": [ "src\\Prism.Core\\Prism.Core.csproj", "src\\Prism.Events\\Prism.Events.csproj", "tests\\Prism.Core.Tests\\Prism.Core.Tests.csproj" ] } } ================================================ FILE: PrismLibrary_Maui.slnf ================================================ { "solution": { "path": "PrismLibrary.sln", "projects": [ "src\\Maui\\Prism.DryIoc.Maui\\Prism.DryIoc.Maui.csproj", "src\\Maui\\Prism.Maui.Rx\\Prism.Maui.Rx.csproj", "src\\Maui\\Prism.Maui\\Prism.Maui.csproj", "src\\Prism.Core\\Prism.Core.csproj", "src\\Prism.Events\\Prism.Events.csproj", "tests\\Maui\\Prism.DryIoc.Maui.Tests\\Prism.DryIoc.Maui.Tests.csproj", "tests\\Maui\\Prism.Maui.Tests\\Prism.Maui.Tests.csproj", "tests\\Prism.Core.Tests\\Prism.Core.Tests.csproj" ] } } ================================================ FILE: PrismLibrary_Uno.slnf ================================================ { "solution": { "path": "PrismLibrary.sln", "projects": [ "src\\Prism.Core\\Prism.Core.csproj", "src\\Prism.Events\\Prism.Events.csproj", "src\\Uno\\Prism.DryIoc.Uno\\Prism.DryIoc.Uno.WinUI.csproj", "src\\Uno\\Prism.Uno\\Prism.Uno.WinUI.csproj", "src\\Uno\\Prism.Uno.Markup\\Prism.Uno.WinUI.Markup.csproj", "tests\\Prism.Core.Tests\\Prism.Core.Tests.csproj" ] } } ================================================ FILE: PrismLibrary_Wpf.slnf ================================================ { "solution": { "path": "PrismLibrary.sln", "projects": [ "src\\Prism.Core\\Prism.Core.csproj", "src\\Prism.Events\\Prism.Events.csproj", "src\\Wpf\\Prism.DryIoc.Wpf\\Prism.DryIoc.Wpf.csproj", "src\\Wpf\\Prism.Unity.Wpf\\Prism.Unity.Wpf.csproj", "src\\Wpf\\Prism.Wpf\\Prism.Wpf.csproj", "tests\\Prism.Core.Tests\\Prism.Core.Tests.csproj", "tests\\Wpf\\Prism.Container.Wpf.Shared\\Prism.Container.Wpf.Shared.shproj", "tests\\Wpf\\Prism.DryIoc.Wpf.Tests\\Prism.DryIoc.Wpf.Tests.csproj", "tests\\Wpf\\Prism.IocContainer.Wpf.Tests.Support\\Prism.IocContainer.Wpf.Tests.Support.csproj", "tests\\Wpf\\Prism.Unity.Wpf.Tests\\Prism.Unity.Wpf.Tests.csproj", "tests\\Wpf\\Prism.Wpf.Tests\\Prism.Wpf.Tests.csproj" ] } } ================================================ FILE: README.md ================================================ # Prism Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Avalonia, MAUI, Uno Platform and WinUI. Separate releases are available for each platform and those will be developed on independent timelines. Prism provides an implementation of a collection of design patterns that are helpful in writing well-structured and maintainable XAML applications, including MVVM, dependency injection, commands, EventAggregator, and others. Prism's core functionality is a shared code base supported in .NET Standard 2.0, .NET Framework 4.6 / 4.7, and .NET6.0/.NET8.0. Those things that need to be platform specific are implemented in the respective libraries for the target platform. Prism also provides great integration of these patterns with the target platform. ## Licensing The Prism Team would first and foremost like to thank all of those developers who have stepped up over the past 4 years with GitHub Sponsors. We are committed to ensuring the longevity and success of the Prism Library. As a result Prism 9.0 is now [Dual License](LICENSE). We continue to offer a FREE Community License for the vast majority of our community, while the Commercial License will now be required by larger organizations to help fund and support the development of Prism. We additionally have the Commercial Plus License which grants access to a number of additional support libraries that build on top of Prism as well as a private Discord channel where you can ask questions and interact with the Prism Team. ## Build Status | | Status | | -------- | ------ | | Full Build | [![Prism CI](https://github.com/PrismLibrary/Prism/actions/workflows/ci.yml/badge.svg)](https://github.com/PrismLibrary/Prism/actions/workflows/ci.yml) | | Prism.Core | [![build_core](https://github.com/PrismLibrary/Prism/actions/workflows/build_core.yml/badge.svg)](https://github.com/PrismLibrary/Prism/actions/workflows/build_core.yml) | | Prism.Wpf | [![build_wpf](https://github.com/PrismLibrary/Prism/actions/workflows/build_wpf.yml/badge.svg)](https://github.com/PrismLibrary/Prism/actions/workflows/build_wpf.yml) | | Prism.Avalonia | [![build_avalonia](https://github.com/PrismLibrary/Prism/actions/workflows/build_avalonia.yml/badge.svg)](https://github.com/PrismLibrary/Prism/actions/workflows/build_avalonia.yml) | | Prism.Uno | [![build_uno](https://github.com/PrismLibrary/Prism/actions/workflows/build_uno.yml/badge.svg)](https://github.com/PrismLibrary/Prism/actions/workflows/build_uno.yml) | | Prism.Maui | [![build_maui](https://github.com/PrismLibrary/Prism/actions/workflows/build_maui.yml/badge.svg)](https://github.com/PrismLibrary/Prism/actions/workflows/build_maui.yml) | ## Support - Documentation is maintained in [the Prism-Documentation repo](https://github.com/PrismLibrary/Prism-Documentation) under /docs and can be found in a readable format on [the website](https://docs.prismlibrary.com/). - StackOverflow: **NOTE** The Prism Team no longer supports or engages with questions posted on StackOverflow. Questions posted there may or may not receive correct answers. - For general questions and support, post your questions in [GitHub Discussions](https://github.com/PrismLibrary/Prism/discussions). - You can enter bugs and feature requests in our [Issues](https://github.com/PrismLibrary/Prism/issues/new/choose). - Enterprise Support: If you are interested in Enterprise Support please email the Prism Team at <support@prismlibrary.com> ## Videos & Training By watching our courses, not only do you help support the project financially, but you might also learn something along the way. We believe this is a win-win for everyone. - [Introduction to Prism for WPF (NEW)](https://pluralsight.pxf.io/bE3rB) - [Introduction to Prism (Legacy)](https://pluralsight.pxf.io/W1Dz3) - [What's New in Prism 5.0](https://pluralsight.pxf.io/z7avm) - [Prism Problems & Solutions: Showing Multiple Shells](https://pluralsight.pxf.io/XVxR5) - [Prism Problems & Solutions: Mastering TabControl](https://pluralsight.pxf.io/B6X99) - [Prism Problems & Solutions: Loading Modules Based on User Roles](https://pluralsight.pxf.io/GvjkE) - [Prism Problems & Solutions: Loading Dependent Views](https://pluralsight.pxf.io/a01zj) We appreciate your support. ## NuGet Packages Official Prism releases are available on NuGet. Prism packages are also available on the private Commercial Plus Feed which will be updated with each merged PR. If you want to take advantage of a new feature as soon as it's merged into the code base, or if there is a critical bug you need fixed we invite you to purchase the Commercial Plus License to take advantage of these packages. ### Core Packages These are the base packages for each platform, together with the Prism's Core assembly as a cross-platform PCL. | Platform | Package | NuGet | Commercial Plus Feed | | -------- | ------- | ------- | ----- | | Cross Platform | [Prism.Core][CoreNuGet] | [![CoreNuGetShield]][CoreNuGet] | [![CorePrismNuGetShield]][CorePrismNuGet] | | Cross Platform | [Prism.Events][EventsNuGet] | [![EventsNuGetShield]][EventsNuGet] | [![EventsPrismNuGetShield]][CorePrismNuGet] | | Cross Platform | [Prism.Container.Abstractions][ContainerAbstractionsNuGet] | [![ContainerAbstractionsNuGetShield]][ContainerAbstractionsNuGet] | [![ContainerAbstractionsPrismNuGetShield]][CorePrismNuGet] | | Cross Platform | [Prism.Container.DryIoc][ContainerDryIocNuGet] | [![ContainerDryIocNuGetShield]][ContainerDryIocNuGet] | [![ContainerDryIocPrismNuGetShield]][CorePrismNuGet] | | Cross Platform | [Prism.Container.Unity][ContainerUnityNuGet] | [![ContainerUnityNuGetShield]][ContainerUnityNuGet] | [![ContainerUnityPrismNuGetShield]][CorePrismNuGet] | | WPF | [Prism.Wpf][WpfNuGet] | [![WpfNuGetShield]][WpfNuGet] | [![WpfPrismNuGetShield]][WpfPrismNuGet] | | Avalonia | [Prism.Avalonia][AvaloniaNuGet] | [![AvaloniaNuGetShield]][AvaloniaNuGet] | [![AvaloniaPrismNuGetShield]][AvaloniaPrismNuGet] | | Xamarin.Forms | [Prism.Forms][FormsNuGet] | [![FormsNuGetShield]][FormsNuGet] | [![FormsPrismNuGetShield]][FormsPrismNuGet] | | Uno Platform and WinUI | [Prism.Uno][UnoNuGet] | [![UnoNuGetShield]][UnoNuGet] | [![UnoPrismNuGetShield]][UnoPrismNuGet] | ### Container-specific packages Each supported IoC container has its own package assisting in the setup and usage of that container together with Prism. The assembly is named using this convention: Prism.*Container.Platform*.dll, e.g. **Prism.Unity.Wpf.dll**. Starting with version 7.0, Prism is moving to separate packages for each platform. Be sure to install the package for the Container and the Platform of your choice. #### WPF | Package | NuGet | Commercial Plus Feed | |---------|-------|-------| | [Prism.DryIoc][DryIocWpfNuGet] | [![DryIocWpfNuGetShield]][DryIocWpfNuGet] | [![DryIocWpfPrismNuGetShield]][DryIocWpfPrismNuGet] | | [Prism.Unity][UnityWpfNuGet] | [![UnityWpfNuGetShield]][UnityWpfNuGet] | [![UnityWpfPrismNuGetShield]][UnityWpfPrismNuGet] | #### Avalonia | Package | NuGet | Commercial Plus Feed | |---------|-------|-------| | [Prism.DryIoc.Avalonia][DryIocAvaloniaNuGet] | [![DryIocAvaloniaNuGetShield]][DryIocAvaloniaNuGet] | [![DryIocAvaloniaPrismNuGetShield]][DryIocAvaloniaPrismNuGet] | #### Xamarin Forms | Package | NuGet | Commercial Plus Feed | |---------|-------|-------| | [Prism.DryIoc.Forms][DryIocFormsNuGet] | [![DryIocFormsNuGetShield]][DryIocFormsNuGet] | [![DryIocFormsPrismNuGetShield]][DryIocFormsPrismNuGet] | | [Prism.Unity.Forms][UnityFormsNuGet] | [![UnityFormsNuGetShield]][UnityFormsNuGet] | [![UnityFormsPrismNuGetShield]][UnityFormsPrismNuGet] | | [Prism.Forms.Regions][PrismFormsRegionsNuget] | [![PrismFormsRegionsNuGetShield]][PrismFormsRegionsNuGet] | [![PrismFormsRegionsPrismNuGetShield]][PrismFormsRegionsPrismNuGet] | #### Uno Platform | Package | NuGet | Commercial Plus Feed | |---------|-------|-------| | [Prism.DryIoc.Uno][DryIocUnoPlatformNuGet] | [![DryIocUnoPlatformNuGetShield]][DryIocUnoPlatformNuGet] | [![DryIocUnoPlatformPrismNuGetShield]][DryIocUnoPlatformPrismNuGet] | ![NuGet package tree](images/NuGetPackageTree.png) A detailed overview of each assembly per package is available [here](http://prismlibrary.github.io/docs/getting-started/NuGet-Packages.html). ## Samples For stable samples be sure to check out the samples repo for the platform you are most interested in. - [Prism for WPF Samples](https://github.com/PrismLibrary/Prism-Samples-Wpf) - [Prism for Xamarim.Forms](https://github.com/PrismLibrary/Prism-Samples-Forms) - [Prism for Uno Platform](#) (Coming soon) - [Prism for .NET MAUI](#) (Coming soon) - [Prism for Avalonia](https://github.com/AvaloniaCommunity/Prism.Avalonia/tree/develop/e2e) ## Contributing We strongly encourage you to get involved and help us evolve the code base. - You can see what our expectations are for pull requests [here](https://github.com/PrismLibrary/Prism/blob/master/.github/CONTRIBUTING.md). [CoreNuGet]: https://www.nuget.org/packages/Prism.Core/ [EventsNuGet]: https://www.nuget.org/packages/Prism.Events/ [ContainerAbstractionsNuGet]: https://www.nuget.org/packages/Prism.Container.Abstractions/ [ContainerDryIocNuGet]: https://www.nuget.org/packages/Prism.Container.DryIoc/ [ContainerUnityNuGet]: https://www.nuget.org/packages/Prism.Container.Unity/ [WpfNuGet]: https://www.nuget.org/packages/Prism.Wpf/ [UnoNuGet]: https://www.nuget.org/packages/Prism.Uno.WinUI/ [AvaloniaNuGet]: https://www.nuget.org/packages/Prism.Avalonia/ [FormsNuget]: https://www.nuget.org/packages/Prism.Forms/ [PrismFormsRegionsNuGet]: https://www.nuget.org/packages/Prism.Forms.Regions/ [PrismFormsRegionsPrismNuGet]: # [PrismFormsRegionsNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Forms.Regions.svg [PrismFormsRegionsPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Forms.Regions/vpre [DryIocWpfNuGet]: https://www.nuget.org/packages/Prism.DryIoc/ [UnityWpfNuGet]: https://www.nuget.org/packages/Prism.Unity/ [DryIocUnoPlatformNuGet]: https://www.nuget.org/packages/Prism.DryIoc.Uno.WinUI/ [DryIocAvaloniaNuGet]: https://www.nuget.org/packages/Prism.DryIoc.Avalonia/ [CoreNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Core.svg [EventsNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Events.svg [ContainerAbstractionsNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Container.Abstractions.svg [ContainerDryIocNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Container.DryIoc.svg [ContainerUnityNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Container.Unity.svg [WpfNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Wpf.svg [FormsNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Forms.svg [UnoNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Uno.WinUI.svg [DryIocWpfNuGetShield]: https://img.shields.io/nuget/vpre/Prism.DryIoc.svg [UnityWpfNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Unity.svg [AvaloniaNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Avalonia.svg [DryIocAvaloniaNuGetShield]: https://img.shields.io/nuget/vpre/Prism.DryIoc.Avalonia.svg [DryIocFormsNuGetShield]: https://img.shields.io/nuget/vpre/Prism.DryIoc.Forms.svg [UnityFormsNuGetShield]: https://img.shields.io/nuget/vpre/Prism.Unity.Forms.svg [DryIocUnoPlatformNuGetShield]: https://img.shields.io/nuget/vpre/Prism.DryIoc.Uno.WinUI.svg [CorePrismNuGet]: # [WpfPrismNuGet]: # [FormsPrismNuGet]: # [UnoPrismNuGet]: # [AvaloniaPrismNuGet]: # [DryIocWpfPrismNuGet]: # [UnityWpfPrismNuGet]: # [UnityFormsPrismNuGet]: # [DryIocFormsPrismNuGet]: # [DryIocAvaloniaPrismNuGet]: # [DryIocUnoPlatformPrismNuGet]: # [CorePrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Core/vpre [EventsPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Events/vpre [ContainerAbstractionsPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Container.Abstractions/vpre [ContainerDryIocPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Container.DryIoc/vpre [ContainerUnityPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Container.Unity/vpre [WpfPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Wpf/vpre [AvaloniaPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Avalonia/vpre [UnoPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Uno.WinUI/vpre [FormsPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Forms/vpre [DryIocWpfPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.DryIoc/vpre [UnityWpfPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.Unity/vpre [DryIocAvaloniaPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.DryIoc.Avalonia/vpre [DryIocUnoPlatformPrismNuGetShield]: https://nuget.prismlibrary.com/shield/Prism.DryIoc.Uno.WinUI/vpre [TwitterLogo]: https://dansiegelgithubsponsors.blob.core.windows.net/images/twitter.png [TwitchLogo]: https://dansiegelgithubsponsors.blob.core.windows.net/images/twitch.png [YouTubeLogo]: https://dansiegelgithubsponsors.blob.core.windows.net/images/youtube.png [OctoSponsor]: https://dansiegelgithubsponsors.blob.core.windows.net/images/octosponsor.png ================================================ FILE: build/consolidate-artifacts.ps1 ================================================ # Ensure artifacts directory is clean $executionRoot = Get-Location $artifactsRoot = $executionRoot, 'artifacts' -join '\' $nugetRoot = $executionRoot, 'artifacts', 'nuget' -join '\' Get-ChildItem .\ -Include $nugetRoot -Recurse | ForEach-Object ($_) { Remove-Item $_.Fullname -Force -Recurse } New-Item -Path $nugetRoot -ItemType Directory -Force > $null $platforms = @('Forms', 'Wpf', 'Uno', 'Maui') $core = @("Prism.Core", "Prism.Events", "Prism.dll", "Prism.pdb", "Prism.xml") $allowedExtensions = @('.dll', '.pdb', '.xml', '.pri', '.nupkg', '.snupkg') $files = Get-ChildItem -Path $artifactsRoot -Filter "*" -Recurse | Where-Object { (Test-Path -Path $_.FullName -PathType Leaf) -and $_.FullName.StartsWith($nugetRoot) -eq $false -and ($allowedExtensions -contains [System.IO.Path]::GetExtension($_.FullName)) } if ($files.Count -eq 0) { $stringBuilder = New-Object System.Text.StringBuilder $stringBuilder.AppendLine("Execution Root: $executionRoot") $stringBuilder.AppendLine("Artifacts:") Get-ChildItem $artifactsRoot | ForEach-Object { $stringBuilder.AppendLine($_.FullName) } $stringBuilder.AppendLine("No files found to copy") Write-Error -Message $stringBuilder.ToString() exit 1 } foreach($file in $files) { Write-Output "Processing $($file)" if ($file -match ($platforms -join '|') -and $file -match ($core -join '|')) { # Ignore Prism.Core / Prism.Events built with platforms continue } elseif ($file -like "*.nupkg" -or $file -like "*.snupkg") { Write-Output "Copying $($file.FullName) to $nugetRoot" Copy-Item $file.FullName $nugetRoot } elseif ($file -like "*.dll" -or $file -like "*.pdb" -or $file -like "*.xml" -or $file -like "*.pri") { if($file.FullName-like ($platforms -join '|') -or $file.FullName -like 'Core') { continue } Write-Output "Getting TFM Directory Name for $($file.FullName)" $parentDirName = Split-Path -Path (Split-Path -Path $file.FullName -Parent) -Leaf Write-Output "Determining Copy Path for $parentDirName" if ((Test-Path -Path $copyPath -PathType Container) -eq $false) { Write-Output "Creating $copyPath" New-Item -Path $copyPath -ItemType Directory -Force > $null } Write-Output "Copying $($file.FullName) to $copyPath" Copy-Item $file.FullName $copyPath } } Get-ChildItem $artifactsRoot | Where-Object { $_.Name -ne 'nuget' } | ForEach-Object { Remove-Item $_.FullName -Force -Recurse } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/.editorconfig ================================================ # Copyright 2024 Xeno Innovations, Inc. # # This EditorConfig file provides consistent coding styles and formatting structure based on # C# standards by Xeno Innovations for your team's projects while preserving your personal defaults. # # For more info: # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/code-style-rule-options # # Remove the line below if you want to inherit .editorconfig settings from higher directories root = true [*] # All generic files should use MSDOS style endings, not Unix (lf) # end_of_line = crlf indent_style = space [*.{cs,csx}] indent_style = space indent_size = 4 tab_width = 4 charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.{xml,xaml,axml,axaml}] indent_style = space indent_size = 2 charset = utf-8-bom trim_trailing_whitespace = true [*.json] indent_style = space indent_size = 2 trim_trailing_whitespace = true [*.sln] indent_size = 2 # Xml project files [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] indent_style = space indent_size = 2 trim_trailing_whitespace = true # Xml config files [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] indent_style = space indent_size = 2 trim_trailing_whitespace = true [*.svg] indent_style = space indent_size = 2 trim_trailing_whitespace = true # PList Files [*.plist] indent_style = space indent_size = 2 trim_trailing_whitespace = true # YAML files [*.{yaml,yml}] indent_style = space indent_size = 2 trim_trailing_whitespace = true # Shell script files [*.sh] end_of_line = lf indent_style = space indent_size = 2 # Powershell [*.{ps1,psd1,psm1}] indent_style = space indent_size = 2 trim_trailing_whitespace = true [*.md] indent_style = space indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true # C# Ruleset [*.{cs,csx}] # Indentation preferences csharp_indent_block_contents = true csharp_indent_braces = false csharp_indent_case_contents = true csharp_indent_case_contents_when_block = false csharp_indent_labels = one_less_than_current csharp_indent_switch_labels = true ## Formatting - new line options ### Require braces to be on a new line for (also known as "Allman" style) ### accessors, methods, object_collection, control_blocks, types, properties, lambdas csharp_new_line_before_open_brace = all csharp_new_line_before_catch = true csharp_new_line_before_else = true csharp_new_line_before_finally = true csharp_new_line_before_members_in_object_initializers = true csharp_new_line_before_members_in_anonymous_types = true csharp_new_line_between_query_expression_clauses = true ## Spaces csharp_space_after_cast = false csharp_space_after_colon_in_inheritance_clause = true csharp_space_after_keywords_in_control_flow_statements = true csharp_space_before_colon_in_inheritance_clause = true csharp_space_before_comma = false csharp_space_before_dot = false csharp_space_before_open_square_brackets = false csharp_space_before_semicolon_in_for_statement = false csharp_space_between_method_call_empty_parameter_list_parentheses = false csharp_space_between_method_call_name_and_opening_parenthesis = false csharp_space_between_method_call_parameter_list_parentheses = false csharp_space_between_method_declaration_empty_parameter_list_parentheses = false csharp_space_between_method_declaration_parameter_list_parentheses = false # Modifier preferences csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion # Organize Usings dotnet_separate_import_directive_groups = false dotnet_sort_system_directives_first = true file_header_template = unset # file_header_template = Copyright Xeno Innovations, Inc. 2022\nSee the LICENSE file in the project root for more information. # this. and Me. preferences dotnet_style_qualification_for_event = false dotnet_style_qualification_for_field = false dotnet_style_qualification_for_method = false dotnet_style_qualification_for_property = false # Language keywords vs BCL types preferences dotnet_style_predefined_type_for_locals_parameters_members = true dotnet_style_predefined_type_for_member_access = true # Parentheses preferences dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity dotnet_style_parentheses_in_other_binary_operators = always_for_clarity dotnet_style_parentheses_in_other_operators = never_if_unnecessary dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity # Modifier preferences dotnet_style_predefined_type_for_locals_parameters_members = true dotnet_style_require_accessibility_modifiers = for_non_interface_members dotnet_style_readonly_field = true # Expression-level preferences dotnet_style_coalesce_expression = true dotnet_style_collection_initializer = true dotnet_style_explicit_tuple_names = true dotnet_style_namespace_match_folder = true dotnet_style_null_propagation = true dotnet_style_object_initializer = true dotnet_style_operator_placement_when_wrapping = beginning_of_line dotnet_style_prefer_auto_properties = true dotnet_style_prefer_compound_assignment = true dotnet_style_prefer_conditional_expression_over_assignment = true dotnet_style_prefer_conditional_expression_over_return = true dotnet_style_prefer_inferred_anonymous_type_member_names = true dotnet_style_prefer_inferred_tuple_names = true dotnet_style_prefer_is_null_check_over_reference_equality_method = true dotnet_style_prefer_simplified_boolean_expressions = true dotnet_style_prefer_simplified_interpolation = true # Parameter preferences dotnet_code_quality_unused_parameters = all # Suppression preferences dotnet_remove_unnecessary_suppression_exclusions = none # New line preferences #dotnet_diagnostic.IDE2000.severity = warning dotnet_style_allow_multiple_blank_lines_experimental = false:error # dotnet_diagnostic.IDE2001.severity = none csharp_style_allow_embedded_statements_on_same_line_experimental = false # dotnet_diagnostic.IDE2002.severity = warning csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false # dotnet_diagnostic.IDE2003.severity = error dotnet_style_allow_statement_immediately_after_block_experimental = false:error # Naming Conventions ## Async methods must use "Async" suffix dotnet_naming_rule.async_methods_end_in_async.symbols = any_async_methods dotnet_naming_rule.async_methods_end_in_async.style = end_in_async dotnet_naming_rule.async_methods_end_in_async.severity = error dotnet_naming_symbols.any_async_methods.applicable_kinds = method dotnet_naming_symbols.any_async_methods.applicable_accessibilities = * dotnet_naming_symbols.any_async_methods.required_modifiers = async dotnet_naming_style.end_in_async.capitalization = pascal_case dotnet_naming_style.end_in_async.required_prefix = dotnet_naming_style.end_in_async.required_suffix = Async dotnet_naming_style.end_in_async.word_separator = ## private fields must prefix with an underscore dotnet_naming_rule.private_members_with_underscore.symbols = private_fields dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore dotnet_naming_rule.private_members_with_underscore.severity = error dotnet_naming_symbols.private_fields.applicable_kinds = field dotnet_naming_symbols.private_fields.applicable_accessibilities = private dotnet_naming_style.prefix_underscore.capitalization = camel_case dotnet_naming_style.prefix_underscore.required_prefix = _ ## private static fields must use PascalCase (overrides '_' based on SA1311) dotnet_naming_rule.private_static_field_naming.symbols = private_static_field_naming dotnet_naming_rule.private_static_field_naming.style = pascal_case_style dotnet_naming_rule.private_static_field_naming.severity = error dotnet_naming_symbols.private_static_field_naming.applicable_kinds = field dotnet_naming_symbols.private_static_field_naming.applicable_accessibilities = private dotnet_naming_symbols.private_static_field_naming.required_modifiers = static, readonly dotnet_naming_style.pascal_case_style.capitalization = pascal_case ## Constant fields must use PascalCase dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = error dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style dotnet_naming_symbols.constant_fields.applicable_kinds = field dotnet_naming_symbols.constant_fields.applicable_accessibilities = * dotnet_naming_symbols.constant_fields.required_modifiers = const dotnet_naming_style.pascal_case_style.capitalization = pascal_case ## Interfaces must have an I suffix dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface dotnet_naming_rule.interface_should_be_begins_with_i.severity = error dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_style.begins_with_i.capitalization = pascal_case dotnet_naming_style.begins_with_i.required_prefix = I dotnet_naming_style.begins_with_i.required_suffix = dotnet_naming_style.begins_with_i.word_separator = ## Types and Non-Field Members must be PascalCase dotnet_naming_rule.types_should_be_pascal_case.severity = error dotnet_naming_rule.types_should_be_pascal_case.symbols = types dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.types.required_modifiers = dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = error dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.non_field_members.required_modifiers = ## Code Style Rules # IDE1005: Use conditional delegate call csharp_style_conditional_delegate_call = true # IDE1005: Delegate invocation can be simplified. dotnet_diagnostic.IDE1005.severity = warning # IDE1006: Naming Styles dotnet_diagnostic.IDE1006.severity = error # IDEOOO8: Use of var dotnet_diagnostic.IDE0008.severity = none # IDE0010: Add missing cases dotnet_diagnostic.IDE0010.severity = none # IDE0011: Add braces csharp_prefer_braces = when_multiline # IDE0025: Use expression body for properties csharp_style_expression_bodied_properties = true # IDE0026: Use expression body for indexers csharp_style_expression_bodied_indexers = true # IDE0027: Use expression body for accessors csharp_style_expression_bodied_accessors = true # IDE0046: Convert to conditional expression dotnet_diagnostic.IDE0046.severity = none # IDE0058: Expression value is never used # csharp_style_unused_value_expression_statement_preference = discard_variable dotnet_diagnostic.IDE0058.severity = none ## Code Quality Rules # CA1031: Do not catch general exception types dotnet_diagnostic.CA1031.severity = none # CA1822: Mark members as static ##dotnet_diagnostic.CA1822.severity = none # CA1507: Use nameof to express symbol names dotnet_diagnostic.CA1507.severity = error ## Compiler # CS0618: Type or member is obsolete ##dotnet_diagnostic.CS0618.severity = error dotnet_diagnostic.CS0618.severity = warning # CS1591: Missing XML comment for publicly visible type or member dotnet_diagnostic.CS1591.severity = none ## StyleCop.Analyzers # SA1000: Keywords should be spaced correctly dotnet_diagnostic.SA1000.severity = error # SA1005: Single line comments should begin with single space dotnet_diagnostic.SA1005.severity = error # SA1008 # SA1025: Spacing?? # SA1101: PrefixLocalCallsWithThis dotnet_diagnostic.SA1101.severity = none # SA1116: Split parameters should start on line after declaration dotnet_diagnostic.SA1116.severity = none # SA1118: Parameter should not span multiple lines dotnet_diagnostic.SA1118.severity = warning # SA1137: Elements should have the same indentation dotnet_diagnostic.SA1137.severity = error # SA1124: Do not use regions dotnet_diagnostic.SA1124.severity = error # SA1200: UsingDirectivesMustBePlacedWithinNamespace dotnet_diagnostic.SA1200.severity = none # SA1201: Elements should appear in the correct order dotnet_diagnostic.SA1201.severity = error # SA1202: Elements should be ordered by access dotnet_diagnostic.SA1202.severity = error # SA1203: Constants should appear before fields dotnet_diagnostic.SA1203.severity = error # SA1204: Static elements should appear before instance elements dotnet_diagnostic.SA1204.severity = error # SA1214: Readonly fields should appear before non-readonly fields dotnet_diagnostic.SA1214.severity = error # SA1306: Field names should begin with lower-case letter dotnet_diagnostic.SA1306.severity = error # SA1309: FieldNamesMustNotBeginWithUnderscore dotnet_diagnostic.SA1309.severity = none # SA1313: Parameter names should begin with lower-case letter dotnet_diagnostic.SA1313.severity = error # SA1414: Tuple types in signatures should have element names dotnet_diagnostic.SA1414.severity = silent # SA1503: Braces should not be omitted dotnet_diagnostic.SA1503.severity = none # SA1505: Opening braces should not be floowed by a blank line dotnet_diagnostic.SA1505.severity= error # SA1507: Code should not contain multiple blank lines in a row dotnet_diagnostic.SA1507.severity = error # SA1508: Closing brac should not be preceded by a blank line dotnet_diagnostic.SA1508.severity= error # SA1513: Closing brace should be followed by blank line dotnet_diagnostic.SA1513.severity = error # SA1514: Element documentation header should be preceded by blank line dotnet_diagnostic.SA1514.severity = error # SA1515: Single-line comment should be preceded by blank line dotnet_diagnostic.SA1515.severity = warning # SA1516: Elements should be separated by blank line dotnet_diagnostic.SA1516.severity = error # SA1600: Elements should be documented dotnet_diagnostic.SA1600.severity = none # SA1602: Enumeration items should not be documented dotnet_diagnostic.SA1602.severity = none # SA1623: Property summary documentation should match accessors dotnet_diagnostic.SA1623.severity = warning # SA1633: FileMustHaveHeader dotnet_diagnostic.SA1633.severity = silent # SA1636: File header copyright text should match dotnet_diagnostic.SA1636.severity = none # Default severity for analyzer diagnostics with category 'StyleCop.CSharp.SpacingRules' SA1028: Code should not contain trailing whitespace dotnet_analyzer_diagnostic.category-StyleCop.CSharp.SpacingRules.severity = error dotnet_diagnostic.VSSpell001.severity = suggestion dotnet_diagnostic.VSSpell002.severity = none # SA0001: XML comment analysis is disabled due to project configuration dotnet_diagnostic.SA0001.severity = none # Ignore Generated XAML [*.sg.cs] # CS1591: Missing XML comment for publicly visible type or member dotnet_diagnostic.CS1591.severity = none dotnet_analyzer_diagnostic.CS1591.severity = none # generated_code = true [WindowsAppSDK-VersionInfo.cs] dotnet_diagnostic.CS1591.severity = none ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/.gitignore ================================================ # Copyright CURRENT_YEAR COMPANY_NAME # Template for C# # Generic Visual Studio files *.bak *.csproj.user *.suo *.vshost.exe *.vshost.exe.manifest *.exe.config *.exp *.lib *.pdb *.pfx *.user *.vbw *.scc *.oca *.userprefs *.userosscache *.sln.docstates *.autorecover *.coverage # VS Code .vscode/* !.vscode/extensions.json !.vscode/launch.json !.vscode/settings.json # SQLite datbases *.db3 # Xamarin.Android Resource.Designer.cs files **/*.Android/**/[Rr]esource.[Dd]esigner.cs **/*.Droid/**/[Rr]esource.[Dd]esigner.cs **/Android/**/[Rr]esource.[Dd]esigner.cs **/Droid/**/[Rr]esource.[Dd]esigner.cs # Build results [Oo]utput/ [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ x64/ x86/ build/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ .vs/ # NuGet Packages *.nupkg ## The packages folder can be ignored because of Package Restore **/packages/* ## Except build/, which is used as an MSBuild target. !**/packages/build/ ## Uncomment if necessary however generally it will be regenerated when needed !**/packages/repositories.config ## NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # NUnit *.VisualState.xml TestResult.xml # Installer Folder /installer/*.exe !/installer/autorun.exe # Lib folder /lib/* !/lib/readme.txt !/lib/readme.md # Output !/[Oo]utput/readme.txt !/[Oo]utput/readme.md ## USER DEFINED /[Dd]ocs/*.csv /[Dd]ocs/backup /[Tt]ools ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/App.axaml ================================================ <Application xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SampleApp.App" RequestedThemeVariant="Default"> <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. --> <Application.Styles> <FluentTheme /> <!-- Custom SVG glyphs --> <!-- NOTE: The namespace may be 'SampleApp' but Assembly name is, 'PrismAvaloniaDemo' --> <StyleInclude Source="avares://PrismAvaloniaDemo/Styles/Icons.axaml" /> </Application.Styles> </Application> ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/App.axaml.cs ================================================ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Data.Core; using Avalonia.Data.Core.Plugins; using Avalonia.Markup.Xaml; using Prism.DryIoc; using Prism.Ioc; using Prism.Navigation.Regions; using SampleApp.Services; using SampleApp.ViewModels; using SampleApp.Views; namespace SampleApp; public partial class App : PrismApplication { public override void Initialize() { AvaloniaXamlLoader.Load(this); // Required when overriding Initialize base.Initialize(); } protected override AvaloniaObject CreateShell() { return Container.Resolve<MainWindow>(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { // Register your Services, Views, Dialogs, etc. here // Services containerRegistry.RegisterSingleton<INotificationService, NotificationService>(); // Views - Region Navigation containerRegistry.RegisterForNavigation<DashboardView, DashboardViewModel>(); containerRegistry.RegisterForNavigation<SettingsView, SettingsViewModel>(); containerRegistry.RegisterForNavigation<SubSettingsView, SubSettingsViewModel>(); } /// <summary>Called after Initialize.</summary> protected override void OnInitialized() { // Register Views to the Region it will appear in. Don't register them in the ViewModel. var regionManager = Container.Resolve<IRegionManager>(); // WARNING: Prism v11.0.0 // - DataTemplates MUST define a DataType or else an XAML error will be thrown // - Error: DataTemplate inside of DataTemplates must have a DataType set regionManager.RegisterViewWithRegion(RegionNames.ContentRegion, typeof(DashboardView)); } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/PrismAvaloniaDemo.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net10.0</TargetFramework> <LangVersion>latest</LangVersion> <Nullable>enable</Nullable> <BuiltInComInteropSupport>true</BuiltInComInteropSupport> <ApplicationManifest>app.manifest</ApplicationManifest> <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault> <ImplicitUsings>false</ImplicitUsings> <Title>Sample Prism.Avalonia App Damian Suess Prism.Avalonia end-to-end demonstration application. ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/Program.cs ================================================ using System; using Avalonia; namespace SampleApp; internal sealed class Program { // Initialization code. Don't use any Avalonia, third-party APIs or any // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. [STAThread] public static void Main(string[] args) => BuildAvaloniaApp() .StartWithClassicDesktopLifetime(args); // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() => AppBuilder .Configure() .UsePlatformDetect() .WithInterFont() .LogToTrace(); } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/RegionNames.cs ================================================ namespace SampleApp; public static class RegionNames { public const string ContentRegion = "ContentRegion"; public const string FooterRegion = "FooterRegion"; public const string SidebarRegion = "SidebarRegion"; } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/Services/INotificationService.cs ================================================ using System; using Avalonia.Controls; using Avalonia.Controls.Notifications; namespace SampleApp.Services; /// In-application Notification Service Interface. public interface INotificationService { /// Defines the maximum number of notifications visible at once. int MaxItems { get; set; } /// The expiry time in seconds at which the notification will close (default 5 seconds). int NotificationTimeout { get; set; } // Set the host window. // Parent window. void SetHostWindow(TopLevel window); /// Display the notification. /// Title. /// Message. /// The of the notification. /// An optional action to call when the notification is clicked. /// An optional action to call when the notification is closed. void Show(string title, string message, NotificationType notificationType = NotificationType.Information, Action? onClick = null, Action? onClose = null); } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/Services/NotificationService.cs ================================================ using System; using Avalonia.Controls.Notifications; namespace SampleApp.Services; public class NotificationService : INotificationService { private int _notificationTimeout = 5; private WindowNotificationManager? _notificationManager; /// public int MaxItems { get; set; } = 4; /// public int NotificationTimeout { get => _notificationTimeout; set => _notificationTimeout = (value < 0) ? 0 : value; } /// public void SetHostWindow(TopLevel hostWindow) { var notificationManager = new WindowNotificationManager(hostWindow) { Position = NotificationPosition.BottomRight, MaxItems = MaxItems, Margin = new Thickness(0, 0, 15, 40) }; _notificationManager = notificationManager; } /// public void Show(string title, string message, NotificationType notificationType = NotificationType.Information, Action? onClick = null, Action? onClose = null) { if (_notificationManager is { } nm) { nm.Show( new Notification( title, message, notificationType, TimeSpan.FromSeconds(_notificationTimeout), onClick, onClose)); } } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/Styles/Icons.axaml ================================================  ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/ViewModels/DashboardViewModel.cs ================================================ using System.Collections.Generic; using System.Collections.ObjectModel; using Avalonia; using Avalonia.Styling; using Prism.Commands; using SampleApp.Services; namespace SampleApp.ViewModels; public class DashboardViewModel : ViewModelBase { private readonly INotificationService _notification; private int _counter = 0; private ObservableCollection _listItems = new(); private int _listItemSelected = -1; private string _listItemText = string.Empty; private ThemeVariant? _themeSelected; public DashboardViewModel(INotificationService notifyService) { _notification = notifyService; ThemeSelected = Application.Current!.RequestedThemeVariant; } public DelegateCommand CmdAddItem => new(() => { _counter++; ListItems.Add($"Item Number: {_counter}"); // Optionally use, `Insert(0, ..)` to insert items at the top //ListItems.Insert(0, entry); }); public DelegateCommand CmdClearItems => new(() => { ListItems.Clear(); }); public DelegateCommand CmdNotification => new(() => { _notification.Show("Hello Prism!", "Notification Pop-up Message."); // Alternate OnClick action ////_notification.Show("Hello Prism!", "Notification Pop-up Message.", () => ////{ //// // Action to perform ////}); }); public ObservableCollection ListItems { get => _listItems; set => SetProperty(ref _listItems, value); } public int ListItemSelected { get => _listItemSelected; set { SetProperty(ref _listItemSelected, value); if (value == -1) return; ListItemText = ListItems[ListItemSelected]; } } public string ListItemText { get => _listItemText; set => SetProperty(ref _listItemText, value); } public ThemeVariant? ThemeSelected { get => _themeSelected; set { SetProperty(ref _themeSelected, value); Application.Current!.RequestedThemeVariant = _themeSelected; } } public List ThemeStyles => new() { ThemeVariant.Default, ThemeVariant.Dark, ThemeVariant.Light, }; } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/ViewModels/MainWindowViewModel.cs ================================================ using Prism.Commands; using Prism.Navigation.Regions; using SampleApp.Views; namespace SampleApp.ViewModels; public class MainWindowViewModel : ViewModelBase { private readonly IRegionManager _regionManager; private bool _isPaneOpened; public MainWindowViewModel(IRegionManager regionManager) { // Since this is a basic ShellWindow, there's not much to do here. // For enterprise apps, you could register up subscriptions // or other startup background tasks so that they get triggered // on startup, rather than putting them in the DashboardViewModel. // // For example, initiate the pulling of News Feeds, etc. _regionManager = regionManager; Title = "Sample Prism.Avalonia"; IsPaneOpened = true; } public DelegateCommand CmdDashboard => new(() => { // _journal.Clear(); _regionManager.RequestNavigate(RegionNames.ContentRegion, nameof(DashboardView)); }); public DelegateCommand CmdFlyoutMenu => new(() => { IsPaneOpened = !IsPaneOpened; }); public DelegateCommand CmdSettings => new(() => _regionManager.RequestNavigate(RegionNames.ContentRegion, nameof(SettingsView))); public bool IsPaneOpened { get => _isPaneOpened; set => SetProperty(ref _isPaneOpened, value); } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/ViewModels/SettingsViewModel.cs ================================================ using SampleApp.Views; using Prism.Commands; using Prism.Navigation; using Prism.Navigation.Regions; namespace SampleApp.ViewModels; public class SettingsViewModel : ViewModelBase { private readonly IRegionManager _regionManager; public SettingsViewModel(IRegionManager regionManager) { _regionManager = regionManager; Title = "Settings"; } public DelegateCommand CmdNavigateToChild => new(() => { var navParams = new NavigationParameters { { "key1", "Some text" }, { "key2", 999 } }; _regionManager.RequestNavigate( RegionNames.ContentRegion, nameof(SubSettingsView), navParams); }); public override void OnNavigatedFrom(NavigationContext navigationContext) { base.OnNavigatedFrom(navigationContext); } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/ViewModels/SubSettingsViewModel.cs ================================================ using Prism.Commands; using Prism.Navigation.Regions; using SampleApp.Views; namespace SampleApp.ViewModels; public class SubSettingsViewModel : ViewModelBase { private readonly IRegionManager _regionManager; private IRegionNavigationJournal? _journal; private string _messageNumber = string.Empty; private string _messageText = string.Empty; public SubSettingsViewModel(IRegionManager regionManager) { _regionManager = regionManager; Title = "Settings - SubView"; } public DelegateCommand CmdNavigateBack => new DelegateCommand(() => { // Go back to the previous calling page, otherwise, Dashboard. if (_journal != null && _journal.CanGoBack) _journal.GoBack(); else _regionManager.RequestNavigate(RegionNames.ContentRegion, nameof(DashboardView)); }); public string MessageNumber { get => _messageNumber; set => SetProperty(ref _messageNumber, value); } public string MessageText { get => _messageText; set => SetProperty(ref _messageText, value); } /// Navigation completed successfully. /// Navigation context. public override void OnNavigatedTo(NavigationContext navigationContext) { // Used to "Go Back" to parent _journal = navigationContext.NavigationService.Journal; // Display our parameters MessageText = navigationContext.Parameters["key1"].ToString() ?? ""; MessageNumber = navigationContext.Parameters["key2"].ToString() ?? ""; } public override bool OnNavigatingTo(NavigationContext navigationContext) { // Navigation permission sample: // Don't allow navigation if our keys are missing return navigationContext.Parameters.ContainsKey("key1") && navigationContext.Parameters.ContainsKey("key2"); } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/ViewModels/ViewModelBase.cs ================================================ using Prism.Mvvm; using Prism.Navigation.Regions; namespace SampleApp.ViewModels; public class ViewModelBase : BindableBase, INavigationAware { private string _title = string.Empty; /// Gets or sets the title of the View. public string Title { get => _title; set => SetProperty(ref _title, value); } /// /// Called to determine if this instance can handle the navigation request. /// Don't call this directly, use . /// /// The navigation context. /// if this instance accepts the navigation request; otherwise, . public virtual bool IsNavigationTarget(NavigationContext navigationContext) { // Auto-allow navigation return OnNavigatingTo(navigationContext); } /// Called when the implementer is being navigated away from. /// The navigation context. public virtual void OnNavigatedFrom(NavigationContext navigationContext) { } /// Called when the implementer has been navigated to. /// The navigation context. public virtual void OnNavigatedTo(NavigationContext navigationContext) { } /// Navigation validation checker. /// Override for Prism 7.2's IsNavigationTarget. /// The navigation context. /// if this instance accepts the navigation request; otherwise, . public virtual bool OnNavigatingTo(NavigationContext navigationContext) { return true; } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/Views/DashboardView.axaml ================================================  ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/Views/SubSettingsView.axaml.cs ================================================ using Avalonia.Controls; namespace SampleApp.Views; public partial class SubSettingsView : UserControl { public SubSettingsView() { InitializeComponent(); } } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/app.manifest ================================================  ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo/settings.XamlStyler ================================================ { "AttributesTolerance": 2, "KeepFirstAttributeOnSameLine": true, "MaxAttributeCharactersPerLine": 0, "MaxAttributesPerLine": 1, "NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransfom, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter", "SeparateByGroups": false, "AttributeIndentation": 0, "AttributeIndentationStyle": 1, "RemoveDesignTimeReferences": false, "EnableAttributeReordering": true, "AttributeOrderingRuleGroups": [ "xmlns, xmlns:x", "xmlns:*", "x:Class", "x:*", "*:*", "Key, Name, Uid, Title, Text", "Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom", "Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight", "Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex", "Source", "*", "PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint", "mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText", "Storyboard.*, From, To, Duration" ], "FirstLineAttributes": "Text", "OrderAttributesByName": true, "PutEndingBracketOnNewLine": false, "RemoveEndingTagOfEmptyElement": true, "SpaceBeforeClosingSlash": true, "RootElementLineBreakRule": 0, "ReorderVSM": 2, "ReorderGridChildren": false, "ReorderCanvasChildren": false, "ReorderSetters": 0, "FormatMarkupExtension": true, "NoNewLineMarkupExtensions": "x:Bind, Binding", "ThicknessSeparator": 2, "ThicknessAttributes": "Margin, Padding, BorderThickness, ThumbnailClipMargin", "FormatOnSave": true, "CommentPadding": 1 } ================================================ FILE: e2e/Avalonia/PrismAvaloniaDemo.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.10.35122.118 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PrismAvaloniaDemo", "PrismAvaloniaDemo\PrismAvaloniaDemo.csproj", "{89EF9B20-B80E-4B4C-A202-170CC0C0B62A}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Prism Library", "Prism Library", "{7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Avalonia", "..\..\src\Avalonia\Prism.Avalonia\Prism.Avalonia.csproj", "{CD50461C-B394-433A-86CA-3DBCD13E8B22}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Avalonia", "..\..\src\Avalonia\Prism.DryIoc.Avalonia\Prism.DryIoc.Avalonia.csproj", "{FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Core", "..\..\src\Prism.Core\Prism.Core.csproj", "{62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Events", "..\..\src\Prism.Events\Prism.Events.csproj", "{FE27B57B-F986-44B7-90CE-421034A891B9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Debug|Any CPU.Build.0 = Debug|Any CPU {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Release|Any CPU.ActiveCfg = Release|Any CPU {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Release|Any CPU.Build.0 = Release|Any CPU {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Debug|Any CPU.Build.0 = Debug|Any CPU {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Release|Any CPU.ActiveCfg = Release|Any CPU {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Release|Any CPU.Build.0 = Release|Any CPU {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Debug|Any CPU.Build.0 = Debug|Any CPU {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Release|Any CPU.Build.0 = Release|Any CPU {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Debug|Any CPU.Build.0 = Debug|Any CPU {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Release|Any CPU.ActiveCfg = Release|Any CPU {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Release|Any CPU.Build.0 = Release|Any CPU {FE27B57B-F986-44B7-90CE-421034A891B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FE27B57B-F986-44B7-90CE-421034A891B9}.Debug|Any CPU.Build.0 = Debug|Any CPU {FE27B57B-F986-44B7-90CE-421034A891B9}.Release|Any CPU.ActiveCfg = Release|Any CPU {FE27B57B-F986-44B7-90CE-421034A891B9}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {CD50461C-B394-433A-86CA-3DBCD13E8B22} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} {FE27B57B-F986-44B7-90CE-421034A891B9} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {2E70249F-C31B-4FB3-A901-E3767E3A9FF5} EndGlobalSection EndGlobal ================================================ FILE: e2e/Maui/Directory.Build.props ================================================ enable true ================================================ FILE: e2e/Maui/Directory.Build.targets ================================================ ================================================ FILE: e2e/Maui/MauiModule/Dialogs/LoginDialog.xaml ================================================ ================================================ FILE: e2e/Wpf/HelloWorld/Views/MainWindow.xaml.cs ================================================ using System.Windows; namespace HelloWorld.Views { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } } ================================================ FILE: e2e/Wpf/HelloWorld.Bootstraper/App.xaml ================================================  ================================================ FILE: e2e/Wpf/HelloWorld.Bootstraper/App.xaml.cs ================================================ using System.Windows; namespace HelloWorld { /// /// Interaction logic for App.xaml /// public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var bs = new Bootstrapper(); bs.Run(); } } } ================================================ FILE: e2e/Wpf/HelloWorld.Bootstraper/Bootstrapper.cs ================================================ using HelloWorld.Modules.ModuleA; using HelloWorld.Views; using Prism.Ioc; using Prism.Modularity; using Prism.Unity; using System.Windows; using Unity; namespace HelloWorld { class Bootstrapper : PrismBootstrapper { protected override DependencyObject CreateShell() { return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterSharedSamples(); } protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { base.ConfigureModuleCatalog(moduleCatalog); moduleCatalog.AddModule(); } } } ================================================ FILE: e2e/Wpf/HelloWorld.Bootstraper/HelloWorld.Bootstrapper.csproj ================================================  WinExe net10.0-windows;net462 true HelloWorld ..\HelloWorld\prism-sandbox.ico ..\HelloWorld\bin\**;..\HelloWorld\obj\**;..\HelloWorld\App.* ================================================ FILE: e2e/Wpf/HelloWorld.Core/DialogServiceExtensions.cs ================================================ using Prism.Dialogs; using System; namespace HelloWorld.Core { public static class DialogServiceExtensions { public static void ShowNotification(this IDialogService dialogService, string message, Action callBack) { dialogService.Show("NotificationDialog", new DialogParameters($"message={message}"), callBack); } public static void ShowNotificationInAnotherWindow(this IDialogService dialogService, string message, Action callBack) { dialogService.Show("NotificationDialog", new DialogParameters($"message={message}"), callBack, "AnotherDialogWindow"); } public static void ShowConfirmation(this IDialogService dialogService, string message, Action callBack) { dialogService.ShowDialog("ConfirmationDialog", new DialogParameters($"message={message}"), callBack); } public static void ShowConfirmationInAnotherWindow(this IDialogService dialogService, string message, Action callBack) { dialogService.ShowDialog("ConfirmationDialog", new DialogParameters($"message={message}"), callBack, "AnotherDialogWindow"); } } } ================================================ FILE: e2e/Wpf/HelloWorld.Core/HelloWorld.Core.csproj ================================================  net10.0-windows;net462 true ================================================ FILE: e2e/Wpf/HelloWorld.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.12.35707.178 d17.12 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloWorld", "HelloWorld\HelloWorld.csproj", "{B03C14CC-8DE9-40EE-9562-12B976E4CEE8}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Core", "..\..\src\Prism.Core\Prism.Core.csproj", "{457AA668-72BB-4701-9A4E-FA86B0C412DE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Prism Library", "Prism Library", "{15CF1FE1-D78E-4E3D-A9F8-FA0FCC56A83A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Wpf", "..\..\src\Wpf\Prism.Wpf\Prism.Wpf.csproj", "{AA8ED3D6-A708-4187-8FAC-00F56E063AD7}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Wpf", "..\..\src\Wpf\Prism.DryIoc.Wpf\Prism.DryIoc.Wpf.csproj", "{A0842858-BFD5-41AE-BDE7-CBD870BC9900}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Unity.Wpf", "..\..\src\Wpf\Prism.Unity.Wpf\Prism.Unity.Wpf.csproj", "{DEBADAAB-5C78-444E-AA77-336A43B49EC3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.Bootstrapper", "HelloWorld.Bootstraper\HelloWorld.Bootstrapper.csproj", "{36C11381-D25A-4E40-956F-05E9C440FA86}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.Modules.ModuleA", "Modules\HelloWorld.Modules.ModuleA\HelloWorld.Modules.ModuleA.csproj", "{D16AADD5-6EAA-446A-83F5-9DFC36DD4108}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.Core", "HelloWorld.Core\HelloWorld.Core.csproj", "{F9541A8C-42DD-4340-AB57-54C7AAAC1BCC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{63541838-3D6A-4F2E-92EF-AC4953BB9B9B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prism.Events", "..\..\src\Prism.Events\Prism.Events.csproj", "{E35BF062-652E-4520-8DD8-55DC80012D57}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B03C14CC-8DE9-40EE-9562-12B976E4CEE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B03C14CC-8DE9-40EE-9562-12B976E4CEE8}.Debug|Any CPU.Build.0 = Debug|Any CPU {B03C14CC-8DE9-40EE-9562-12B976E4CEE8}.Release|Any CPU.ActiveCfg = Release|Any CPU {B03C14CC-8DE9-40EE-9562-12B976E4CEE8}.Release|Any CPU.Build.0 = Release|Any CPU {457AA668-72BB-4701-9A4E-FA86B0C412DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {457AA668-72BB-4701-9A4E-FA86B0C412DE}.Debug|Any CPU.Build.0 = Debug|Any CPU {457AA668-72BB-4701-9A4E-FA86B0C412DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {457AA668-72BB-4701-9A4E-FA86B0C412DE}.Release|Any CPU.Build.0 = Release|Any CPU {AA8ED3D6-A708-4187-8FAC-00F56E063AD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AA8ED3D6-A708-4187-8FAC-00F56E063AD7}.Debug|Any CPU.Build.0 = Debug|Any CPU {AA8ED3D6-A708-4187-8FAC-00F56E063AD7}.Release|Any CPU.ActiveCfg = Release|Any CPU {AA8ED3D6-A708-4187-8FAC-00F56E063AD7}.Release|Any CPU.Build.0 = Release|Any CPU {A0842858-BFD5-41AE-BDE7-CBD870BC9900}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A0842858-BFD5-41AE-BDE7-CBD870BC9900}.Debug|Any CPU.Build.0 = Debug|Any CPU {A0842858-BFD5-41AE-BDE7-CBD870BC9900}.Release|Any CPU.ActiveCfg = Release|Any CPU {A0842858-BFD5-41AE-BDE7-CBD870BC9900}.Release|Any CPU.Build.0 = Release|Any CPU {DEBADAAB-5C78-444E-AA77-336A43B49EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DEBADAAB-5C78-444E-AA77-336A43B49EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU {DEBADAAB-5C78-444E-AA77-336A43B49EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU {DEBADAAB-5C78-444E-AA77-336A43B49EC3}.Release|Any CPU.Build.0 = Release|Any CPU {36C11381-D25A-4E40-956F-05E9C440FA86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {36C11381-D25A-4E40-956F-05E9C440FA86}.Debug|Any CPU.Build.0 = Debug|Any CPU {36C11381-D25A-4E40-956F-05E9C440FA86}.Release|Any CPU.ActiveCfg = Release|Any CPU {36C11381-D25A-4E40-956F-05E9C440FA86}.Release|Any CPU.Build.0 = Release|Any CPU {D16AADD5-6EAA-446A-83F5-9DFC36DD4108}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D16AADD5-6EAA-446A-83F5-9DFC36DD4108}.Debug|Any CPU.Build.0 = Debug|Any CPU {D16AADD5-6EAA-446A-83F5-9DFC36DD4108}.Release|Any CPU.ActiveCfg = Release|Any CPU {D16AADD5-6EAA-446A-83F5-9DFC36DD4108}.Release|Any CPU.Build.0 = Release|Any CPU {F9541A8C-42DD-4340-AB57-54C7AAAC1BCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F9541A8C-42DD-4340-AB57-54C7AAAC1BCC}.Debug|Any CPU.Build.0 = Debug|Any CPU {F9541A8C-42DD-4340-AB57-54C7AAAC1BCC}.Release|Any CPU.ActiveCfg = Release|Any CPU {F9541A8C-42DD-4340-AB57-54C7AAAC1BCC}.Release|Any CPU.Build.0 = Release|Any CPU {E35BF062-652E-4520-8DD8-55DC80012D57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E35BF062-652E-4520-8DD8-55DC80012D57}.Debug|Any CPU.Build.0 = Debug|Any CPU {E35BF062-652E-4520-8DD8-55DC80012D57}.Release|Any CPU.ActiveCfg = Release|Any CPU {E35BF062-652E-4520-8DD8-55DC80012D57}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {457AA668-72BB-4701-9A4E-FA86B0C412DE} = {15CF1FE1-D78E-4E3D-A9F8-FA0FCC56A83A} {AA8ED3D6-A708-4187-8FAC-00F56E063AD7} = {15CF1FE1-D78E-4E3D-A9F8-FA0FCC56A83A} {A0842858-BFD5-41AE-BDE7-CBD870BC9900} = {15CF1FE1-D78E-4E3D-A9F8-FA0FCC56A83A} {DEBADAAB-5C78-444E-AA77-336A43B49EC3} = {15CF1FE1-D78E-4E3D-A9F8-FA0FCC56A83A} {D16AADD5-6EAA-446A-83F5-9DFC36DD4108} = {63541838-3D6A-4F2E-92EF-AC4953BB9B9B} {E35BF062-652E-4520-8DD8-55DC80012D57} = {15CF1FE1-D78E-4E3D-A9F8-FA0FCC56A83A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D877B086-37FD-4AA5-8AB3-CF7E87E27425} EndGlobalSection GlobalSection(SharedMSBuildProjectFiles) = preSolution ..\..\src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems*{a0842858-bfd5-41ae-bde7-cbd870bc9900}*SharedItemsImports = 5 ..\..\src\Containers\Prism.Unity.Shared\Prism.Unity.Shared.projitems*{debadaab-5c78-444e-aa77-336a43b49ec3}*SharedItemsImports = 5 EndGlobalSection EndGlobal ================================================ FILE: e2e/Wpf/Modules/HelloWorld.Modules.ModuleA/HelloWorld.Modules.ModuleA.csproj ================================================  net10.0-windows;net462 true ================================================ FILE: e2e/Wpf/Modules/HelloWorld.Modules.ModuleA/ModuleAModule.cs ================================================ using HelloWorld.Modules.ModuleA.Views; using Prism.Ioc; using Prism.Modularity; namespace HelloWorld.Modules.ModuleA { public class ModuleAModule : IModule { public void OnInitialized(IContainerProvider containerProvider) { } public void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterForNavigation(); } } } ================================================ FILE: e2e/Wpf/Modules/HelloWorld.Modules.ModuleA/ViewModels/ViewAViewModel.cs ================================================ using Prism.Commands; using Prism.Mvvm; using Prism.Dialogs; using HelloWorld.Core; namespace HelloWorld.Modules.ModuleA.ViewModels { public class ViewAViewModel : BindableBase { private string _message; public string Message { get { return _message; } set { SetProperty(ref _message, value); } } private DelegateCommand _showDialogCommand; private readonly IDialogService _dialogService; public DelegateCommand ShowDialogCommand => _showDialogCommand ?? (_showDialogCommand = new DelegateCommand(ExecuteShowDialogCommand)); void ExecuteShowDialogCommand() { _dialogService.ShowNotification("Hello There!", r => { if (r.Result == ButtonResult.OK) Message = "OK was clicked"; else Message = "Something else was clicked"; }); } public ViewAViewModel(IDialogService dialogService) { Message = "Hello from ViewA in Module A"; _dialogService = dialogService; } } } ================================================ FILE: e2e/Wpf/Modules/HelloWorld.Modules.ModuleA/Views/ViewA.xaml ================================================