All Versions
13
Latest Version
Avg Release Cycle
77 days
Latest Release
370 days ago

Changelog History
Page 1

  • v8.0.0.1909 Changes

    October 21, 2020

    Prism 8.0 RTM

    ๐Ÿš€ It's here, the long awaited Prism 8. This is a huge release and contains a number of breaking changes, bug fixes, new features and even a brand new Platform! So lets officially welcome the Uno Platform to the Prism family of supported platforms!

    CI Feed Access

    ๐Ÿ‘ท Beginning with Prism 8.0 all CI packages moving forward will only be available to Sponsors on the Sponsor Connect package feed.

    Prism.Core - Notable Changes

    • Added additional Registration Methods to allow Scoped Services. ( NOTE : Prism uses scoped lifetimes for Prism.Forms and creates a new scope each time a new Page is navigated to. It is not used anywhere else by Prism)
    • โž• Added additional Registration Methods to allow Factory / Delegate methods to register services
    • โž• Added additional Registration Methods to allow registering a single Implementation type for multiple services
    • ๐Ÿ’ฅ BREAKING Removed ILoggerFacade and entire Prism.Logging namespace - recommended migration use Prism.Plugin.Logging or other 3rd party logging frameworks
    • Added ContainerLocator ( NOTE : This replaces the Common Service Locator in Prism.Wpf)
    • โž• Added ContainerResolutionException to help better identify what could not be resolved. This includes a GetErrors method to help dig in and identify why a type failed to be resolved
    • ๐Ÿ‘ DelegateCommand - Added support for PropertyChanged events that pass string.Empty
    • โž• Added Await extension to execute callbacks when working inside of a void method without needing to use async void
    • โž• Added overload for IEventAggregator to provide filter

    Prism.Forms - Notable Changes

    • ๐Ÿ›  Fixed bug with Dialog Service where Dialog would appear behind a Modal page
    • โœจ Enhancement with Dialog Service. The Dialog Service now adds a Modal page with a transparent background to prevent user interaction with Navigation Bars on the NavigationPage, TabbedPage, or MasterDetailPage. This also fixes issues related to the reparenting of content that some people experienced
    • Consolidated IPlatformNavigationService with INavigationService
    • โœ‚ Removed Xamarin.Forms DependencyResolver support
    • INavigationService is now a Scoped service. A new Scope will be set each time the PageNavigationService creates a new page. This allows Prism to reuse the same instance of the NavigationService for your ViewModel, the XAML Navigation Extensions, and within Regions
    • ๐Ÿ”„ Changed IPageBehaviorFactory - only ApplyPageBehaviors is exposed, all other methods have been moved to protected virtual methods in PageBehaviorFactory
    • โž• Added Navigation Error Handler that can be called without using async void this allows you to specify a delegate that should be called to handle the exception encountered.
    • โœ‚ Removed IAutoInitialize - recommended migration use Prism.Magician on Sponsor Connect
    • โœ‚ Remove AutoRegisterForNavigation - recommended migration use the much more powerful Prism.Magician on Sponsor Connect
    • ๐Ÿ†• NEW FEATURE - Region support for Prism.Forms is HERE!!!

    Prism.Wpf - Notable Changes

    • โœ‚ Removed Legacy Bootstrapper
    • โž• Added new PrismBootstrapper that follows the PrismApplication pattern for those apps that cannot use PrismApplication
    • BEHAVIOR CHANGE : ViewModelLocator is now Opt-Out not Opt-In. The ViewModelLocator.AutowireViewModel will automatically be set to true if the DataContext is null and the property has not been set.
    • โž• Added XAML ContainerProvider to help resolve types in XAML
    • ๐Ÿ›  Fixed CurrentEntry for views not in Journal
    • โž• Added support for multiple dialog windows
    • โšก๏ธ Updated to netcoreapp3.1
    • โž• Added generic overloads for RegisterMappings
    • โž• Added RegisterViewWithRegion generic method

    ๐Ÿ”„ Changes:

    • ๐Ÿ”€ 3fc5286 Merge pull request #2217 from PrismLibrary/uno-vml
    • 9cedce4 normalize VML Autowire property name
    • a342a38 fix working directory
    • 7bab4ed put Uno assemblies in Uno directory
    • ๐Ÿ“ฆ 28bac21 prevent duplication of NuGet package artifacts
    • โšก๏ธ 75db987 update package feed info
    • โœ… 06aab3f use latest nuget
    • ๐Ÿ”€ 10c492a Merge pull request #2215 from cabauman/docs/xml-comments
    • ๐Ÿ“„ 0eb6d70 Add XML Docs to various interfaces and classes
    • ๐Ÿ“ฆ 9ad0c69 Merge pull request #2194 from PrismLibrary/centralpackages ๐Ÿ‘€ See More
    • ๐Ÿš€ 3b93818 deploy to Sponsor Connect
    • ๐Ÿ“ฆ defb416 specify CentralPackageVersions in the global.json
    • ๐Ÿ— 2889307 remove build targets
    • โœ… e0f45df wasm test fixes
    • ๐Ÿ›  5c5d28a path fixes
    • โšก๏ธ 1f08f40 dependency updates
    • 077f1c5 ensure proper .net core version is installed
    • 9cae2a8 add dependabot
    • โšก๏ธ b232bbe update UI Build settings
    • ๐Ÿ“ฆ 4b172d0 use central package versioning
    • ๐Ÿ”€ fe087bb Merge pull request #2214 from PrismLibrary/remove-auto-stuff
    • ๐Ÿ›  b4ff238 fixed e2e app
    • ๐Ÿšš faad634 removed auto initialize for nav parameters
    • ๐Ÿ”€ 868fcfc Merge pull request #2213 from PrismLibrary/remove-auto-stuff
    • โšก๏ธ 6e3fbc9 updated solution to remove mockapp
    • ๐Ÿ›  833c11d fixed e2e app using the auto register attribute
    • ๐Ÿšš 28008c7 removed autoregister feature
    • 7a3d2fa added discussions link
    • 41c74c4 added sponsor action
    • ๐Ÿ”€ 5ddd97b Merge pull request #2208 from PrismLibrary/housekeeping/fix-codeformatting
    • โšก๏ธ 4da8e8a Automated dotnet-format update
    • ca46320 add daily format action
    • ๐Ÿ”€ 2bf255d Merge pull request #2205 from PrismLibrary/xcode-fixes
    • 0b9feaa provide xcode override method
    • ๐Ÿ”€ be743c2 Merge pull request #2207 from ryoasai/Issue-2206
    • ๐Ÿ”€ e3a0a96 Merge branch 'Issue-2206' of https://github.com/ryoasai/Prism into Issue-2206
    • 0๏ธโƒฃ cd8bc0a Ensure transient reuse irrespective of default reuse setting.
    • 0๏ธโƒฃ 6dbcd01 Ensure transient reuse irrespectiveof default reuse setting.
    • ๐Ÿ”€ 66e5b93 Merge pull request #2202 from PrismLibrary/issue-2196
    • ๐Ÿ›  ad6a286 fixed propertychanged with empty string
    • ๐Ÿ”€ 2617907 Merge pull request #2195 from PrismLibrary/unity
    • ๐Ÿšš 6e030ec remove dual registration hack
    • โšก๏ธ 44d200c Merge pull request #2192 from PrismLibrary/autowire-update
    • 8d7ebad add Prism.Forms.Regions nuget links
    • ๐Ÿšš a65ae44 remove DebugType from Prism.Core
    • โšก๏ธ e2c119b update sdks
    • ๐Ÿ“ฆ e8e2bb8 add missing Prism.Forms.Regions package description
    • ee373eb Prevent AutowireViewModel if BindingContext has been set
    • 1203c29 [fix]: check DataContext to prevent creating the ViewModel twice
    • ๐Ÿ”€ 2f81418 Merge pull request #2191 from PrismLibrary/dialog-improvements
    • 6526c6e added more overrides
    • 24b8b15 dialog service improvements
    • ๐Ÿ”€ 763982e Merge pull request #2185 from pavinan/patch-1
    • ๐Ÿ›  b48e9f9 Fixed Twitter URLs.
    • โšก๏ธ e4ee8b8 Update README.md
    • ๐Ÿ”€ 4049b3e Merge pull request #2181 from PrismLibrary/transparent-modal
    • 3edc501 fix iOS modal transparency
    • ๐Ÿ”€ 6daceb0 Merge pull request #2180 from PrismLibrary/module-manager
    • โœ… 75256c0 add tests for the ModuleManager Extensions
    • 413ca57 add ModuleInfo collection to IModuleManager
    • ๐Ÿ”€ 5a06d41 Merge pull request #2178 from PrismLibrary/remove-lagcy-bootstrappers
    • โœ… 59d1eba fixing test - change in underlying DryIoc API reference
    • 44de606 fix moq resolution with DryIocContainerExtension
    • ๐Ÿšš 88b90b9 removed legacy bootstrapper
    • ๐Ÿ”€ d5cb510 Merge pull request #2176 from PrismLibrary/remove-logger
    • โœ… f1bf6ca add missing shared test project
    • ๐Ÿ“„ 48c2533 fixing xml docs
    • ๐Ÿšš 86510aa remove ILoggerFacade
    • ๐Ÿ”€ 463d18a Merge pull request #2175 from PrismLibrary/xaml-catalog
    • ๐Ÿ”€ c200a23 Merge pull request #2174 from Reapism/patch-1
    • ๐Ÿ— 3c45cd0 comment out post build task
    • โช 760e306 reverted .net core target version
    • โœ… 3fee86e added tests and fixed backwards compatibility for old file path
    • ๐Ÿ— 20e0cb8 fixed xcopy command to run on the build server
    • โœ… b3016d8 added some tests
    • ๐Ÿšš 061d078 removed old API for creating xaml catalogs
    • 382e691 renamed xaml module catalog
    • 6efa943 implemented new XamlResourceCatalog
    • 6f3f297 Fix some formatting and comments.
    • ๐Ÿ”€ 7b614ec Merge pull request #2173 from PrismLibrary/remove-platform-di
    • ๐Ÿ”€ 23527f7 Merge pull request #2172 from PrismLibrary/platformnavigation
    • ๐Ÿšš 43a3cbb remove DependencyResolver test
    • โšก๏ธ a4fe2aa link updates
    • โšก๏ธ 086d30c update deprecated Icon to use IconImageSource
    • ๐Ÿšš 0b1ac68 removes the dependency resolver from PrismApplication
    • ๐Ÿ”€ 818495b merge IPlatformNavigationService into INavigationService
    • ๐Ÿšš 1a355be Remove ILoggerFacade from PageNavigationService
    • ๐Ÿ”€ 522799b Merge pull request #2171 from PrismLibrary/vml-opt-out
    • ๐Ÿšš 30a5b5b remove debug code
    • c31d9d8 make viewmodellocator opt-out
    • ๐Ÿ”€ 43d1545 Merge pull request #2169 from PrismLibrary/transparent-modals
    • โšก๏ธ 05e9a73 updating tests
    • 0ca6e0e use modal page
    • ๐Ÿ”€ d1646c3 Merge pull request #2168 from PrismLibrary/region-fixes
    • ๐Ÿ“ฆ 591bdb0 remove GitHub packages
    • 92283bd use base region
    • ๐Ÿ›  b83ffd4 change to RegisterForRegionNavigation - fixes #2166
    • ๐Ÿ“ฆ d9f8368 Merge pull request #2165 from PrismLibrary/package-descriptions
    • โšก๏ธ 9fa8493 update package descriptions
    • ๐Ÿ”€ 804739e Merge pull request #2077 from PrismLibrary/wip-regions
    • 09ecf4a hold back CollectionView Adapter
    • 3726ad1 fix LayoutView bindings
    • 468f1ff simplifying Carousel Item Binding
    • โšก๏ธ 614a038 Merge pull request #2164 from ebariche/dev/eb/update-to-uno-3
    • โšก๏ธ cb93dd9 Update to Uno 3.0
    • โšก๏ธ e995276 updates and fixes for Carousels and registration
    • โšก๏ธ bc2fadb Registration updates
    • ๐Ÿ”€ 829475b Merge pull request #2163 from Algorithman/DirectoryModuleCatalogSpelling
    • ๐Ÿ›  29167bc Fixed spelling error: GetNotAlreadyLoadedModuleInfos
    • 493b91f handle null RegionManager on Region
    • โšก๏ธ c5729b7 build updates
    • โšก๏ธ 2317805 Update Region Module demos
    • โšก๏ธ 46f38e4 update module registrations
    • 8d2b2eb implementing adapters
    • 9525981 use delegate registration for Region Adapter Mappings & Behaviors
    • 16e376a fixing sln file
    • ๐Ÿšš b70f870 remove support for Partial Views
    • c1fa5dd delay region created and tracking of INavigationService
    • 3c3460c Fixing lifecycle so Region created once fully parented to the Page
    • ed97ba9 fixing sln file
    • 099f27e adding Prism.Forms.Regions to main solution
    • 17c3225 getting Region Navigation working
    • 2d793b9 adding Region Module to E2E app
    • dc59903 fixing Module State
    • โšก๏ธ 75e8db4 update to Xamarin.Forms 4.5
    • 34863fa cross-plat sharing and region manager implementation
    • b023dd6 wip regions
    • ๐Ÿ”€ 59cc94b Merge pull request #2147 from Jesus805/master
    • ๐Ÿ”€ 4906e5f Merge pull request #2143 from PrismLibrary/lifo
    • โœ… 01f629a adding test suite for containers
    • 6c5344e allow multiple registrations with Last In First Out
    • โšก๏ธ c71957a updated readme with pluralsight links
    • โšก๏ธ 8bcca7c Update SelectorItemsSourceSyncBehavior.cs
    • ๐Ÿ”€ 4eeacaf Merge pull request #2146 from Jesus805/master
    • ๐Ÿ“š 6d44a1e XML Documentation for Dryloc.Wpf, Unity.Wpf and Prism.Core
    • ๐Ÿ”€ 10365d5 Merge pull request #2145 from Jesus805/master
    • ๐Ÿšš 302d93d Removed extra to
    • ec3fad3 space
    • d9a0853 Added XML comments to IDialogParameters
    • ๐Ÿ›  88f69bc Fixed some spelling mistakes in ParametersBase
    • ๐Ÿ”€ b2be9cc Merge pull request #2067 from Jesus805/master
    • ๐Ÿ”€ 695606b Merge pull request #2069 from gayaK/master
    • 750a914 add Prism.Templates issue link
    • ๐Ÿ“š 6e7a514 Removed duplicate catalog documentation parameter
    • efe9497 Changed IModuleCatalogExtensions comment
    • ๐Ÿ“š a4c0bf0 Add documentation to various classes in Prism.Wpf
    • ๐Ÿ“š 6964272 Added Documentation to PrismApplication
    • ๐Ÿ“š 41f7cd8 Added Documentation to IModuleCatalogExtensions
    • ๐Ÿ“š ebf8724 Added documentation to MVVMHelpers
    • ๐Ÿ”€ 03cdfaa Merge pull request #2139 from unoplatform/dev/jela/uno-fix-ios
    • โช a2a956e ci: Reduce nuget restore logging level to normal
    • 65f6cf2 fix(uno): Fix iOS e2e is not starting properly
    • ๐Ÿ”€ 00834e9 Merge pull request #2138 from MikelThief/MikelThief-readme-patch
    • ๐Ÿ“ฆ 34c94c5 Fix link to Uno Nuget package
    • 83e8865 Merge pull request #2122 from bmarinov/feature/use_recommended_dryioc_cfg_method
    • ๐Ÿ”€ a7ae9d9 Merge pull request #2136 from janschreier/NameCorrection
    • ๐Ÿ”€ 2c7765b Merge pull request #2133 from PrismLibrary/sourcelink
    • 1b8a823 Renamed IDestructibleRegionBehavior to DestructibleRegionBehavior
    • ๐Ÿ— b64d6ac simplify deterministic build
    • ๐Ÿšš 21322cd move packing logic into src folder
    • ๐Ÿšš a7908b7 remove deprecated test
    • ๐Ÿ— 00edb25 bump sdk to 3.1.300 for build prop fixes
    • โœ… a8f19f2 use boots for latest stable sdks
    • โšก๏ธ a66981e sourcelink and deterministic build updates
    • ๐Ÿ“ฆ 09abd76 embed License in package
    • ๐Ÿ“ฆ 8ab8773 publish symbols packages
    • ๐Ÿšš 7d5360f removed IMasterDetailPageOptions from sample
    • ๐Ÿ”ง 7519bd9 Replace deprecated dryioc configuration method call
    • 7b0e6d6 call Xamarin.Forms Init
    • โšก๏ธ 6d8ee46 Merge pull request #2113 from unoplatform/dev/jela/playstore-update
    • โšก๏ธ 5d9a418 test: Adjust for updated android SDK Android-28 emulator name
    • ๐Ÿ”€ 6244391 Merge pull request #2110 from PrismLibrary/scopednavigation
    • โœ… 0374fcb all disable UI Tests
    • 2a69d55 ensure the PrismApplication is created before we set a main page
    • 6544370 fixing issue with DryIoc injecting a Page to IPageAware
    • โช 165e697 let Xamarin.Forms restore transitively
    • โšก๏ธ 34f5f76 update test dependencies
    • โšก๏ธ 87c793b update Unity.Container
    • ac6b487 adding shared container
    • 2896142 fixing Scoped Navigation
    • 5c33d8c scope navigation
    • ๐Ÿ”€ 527faaf Merge pull request #2103 from rssllgrrtt/Adding-Device.InvokeOnMainThreadAsync-to-DeviceService-#2043
    • ๐Ÿšš 1b7218c Removed view centric hooks from DeviceService
    • ๐Ÿ”€ b6faee2 Merge pull request #2108 from unoplatform/dev/jela/uwp-fix
    • ๐Ÿ”€ ca30a61 Merge pull request #2105 from d3fkn1ght/xmlDocs2
    • cb7620b Fix ContainerProviderExtensionFixture
    • โšก๏ธ a27288e Updated TargetFrameworks, updated to XF 4.6.0.726 and added support for additional methods and properties from the Device class.
    • ๐Ÿ e06a353 fix(uno): Fix Windows initialization sequence
    • 3ee01c9 fix: Adjust xml comment in DryIocContainerExtension
    • ๐Ÿ”€ ee6a519 Merge pull request #2107 from PrismLibrary/issue-2106
    • 227ea29 using the ContainerLocator as the VML resolver.
    • ๐Ÿ”ง 845f263 Revert "fixed ConfigureViewModelLocator"
    • ๐Ÿ”ง 4dd403b fixed ConfigureViewModelLocator
    • 72f1a35 Added documenation for:
    • ba493ca wrap ctors
    • 24945db setup containers for container extensions
    • โšก๏ธ 581c3f5 Updated to latest Xamarin.Forms (4.5.0.657) and mapped to new Device.InvokeOnMainThreadAsync methods
    • ๐Ÿšš 876e930 Remove ContainerProviderExtension from UnoPlatform
    • โ™ป๏ธ e8622d6 Refactoring unit test codes
    • ๐Ÿ”€ 5c14ec4 Merge remote-tracking branch 'remotes/prism/master'
    • โœ… 6270fbe Add unit test for ContainerProviderExtension
    • fff8023 Add XmlnsDefinition of Prism.Ioc namespace.
    • ๐Ÿ“š 27487ef Fix documentation comment for ContainerProviderExtension.cs
    • 94155bb Added a "BeginInvokeOnMainThreadAsync" method to "IDeviceService"
    • ๐Ÿ”€ 8597347 Merge pull request #2101 from unoplatform/dev/jela/uwp-fix
    • ๐Ÿ”€ d243376 Merge pull request #2100 from unoplatform/dev/jela/android-test-optional
    • be92542 fix(uno-uwp): Disable library layout generation
    • ๐Ÿ— 6bba1a5 fix(uno-e2e): Disable build fail on android UI tests failure
    • ๐Ÿ“„ 7e4e92a fixing bad docs
    • ๐Ÿ”€ 076a7cf Merge pull request #2073 from WaldemarCoding/master
    • 722c45a changes requested by dan
    • ๐Ÿ”€ 631660a Merge pull request #2075 from d3fkn1ght/xmlDocs1
    • 22d8eda implement dans comments
    • bb2efd3 Solved CS1591 in INavigationParamters[Internal].cs
    • e0e865e Missed one
    • 3d48ffc Resolved some CS1573,1591
    • ๐Ÿ”€ df64def Merge pull request #2097 from PrismLibrary/prismapplication-tests
    • โšก๏ธ e91dc8a Update ParametersBase.cs
    • โœ… 3c983f9 added tests for PrismApplicationBase
    • ๐Ÿ”€ 2f077f9 Merge pull request #2096 from PrismLibrary/bootstrapper-tests
    • ๐Ÿ”€ 43f7f5b Merge pull request #2086 from PrismLibrary/containerextensions
    • โœ… 95d1c2a disable randomly failing test
    • โœ… 6cd9106 Added test to validate required types were registered
    • โœ… 2036140 adding tests for Container Registrations
    • ๐Ÿ”€ 82325a9 Merge pull request #2084 from PrismLibrary/task-extensions
    • โœ… 5f55d28 added unit tests
    • 82b6bca added Task extensions for async/void tasks
    • ๐Ÿ”€ 130ed2a Merge pull request #2094 from unoplatform/dev/jela/uwp-adjust
    • f26ee78 fixing file location
    • ๐Ÿšš 507652f fix(WinUI): Remove explicit dependency on CommonServiceLocator
    • fa2fd01 fix(Uno): Adjust Prism.Uno UWP library layout
    • โœ… a99eeed adding tests for ContainerResolutionException
    • โœ… 439bc9d fixing mocked test
    • 0๏ธโƒฃ 70ba338 adding DefaultRules to DryIocContainerExtension
    • 936e3df implementing registration overloads
    • 14b1cc0 adding ContainerResolutionException #2078
    • 4d898d4 adding CreateScope
    • ๐Ÿšš 0cb5b2e remove extra space
    • ๐Ÿ”€ 9f75d1a Merge pull request #2089 from PrismLibrary/autoregister
    • 460c0b8 fixing uno rebase
    • โœ… 2f4b0f5 fixing issues with parallel tests
    • โœ… 9bdc2ea adding tests for AutoRegisterForNavigation - fixes #2088
    • ๐Ÿ”€ 66a24a9 Merge pull request #2092 from PrismLibrary/bootstrapper-tests
    • โœ… 94b4462 Added unit tests for new PrismBootstrapperBase
    • ๐Ÿ”€ 05c82a2 Merge pull request #2091 from lv1il0s/master
    • ๐Ÿ“ฆ 2c434c0 Move reference to Xamarin.Forms.Mocks to nuget/packageReference
    • ๐Ÿ”€ 291d1fe Merge pull request #2090 from unoplatform/dev/jela/uitests-adjust
    • ๐ŸŽ b0dcdee fix(uno): Use set-runtime step to set the mono version used on macOS builds
    • โœ… 017ed03 fix: Adjust Dialog test to use the default dialog
    • โช e072949 fix: Restore default test context to WebAssembly

    ๐Ÿ— This list of changes was auto generated.

  • v8.0.0.1850 Changes

    August 25, 2020

    Description

    ๐Ÿš€ This is the Prism 8 Release Candidate! There are lots of changes including some major breaks as noted by the major version bump. Many of the obsolete API's in Prism 7 have now been removed in Prism 8.

    ๐Ÿ’ฅ BREAKING

    • โšก๏ธ The entire Prism.Logging namespace has been removed. This will present a number of binary breaks including with popular libraries like Prism.Plugin.Popups. You may need to wait for v8 compatible packages to be produced before updating.
    • ๐Ÿšš The Legacy Container specific Bootstrapper's in Prism.Wpf have been removed. You will need to migrate to the new PrismBootstrapper or PrismApplication

    Highlights

    • ๐Ÿ— Prism.Uno... Introducing Prism for Uno / WinUI. Note that if you are building a straight WinUI/UWP app there is no dependency on Uno even though you will need to install the Prism.Uno packages.
    • ๐Ÿ‘ More robust Container Abstractions now allow registering Factory / Delegate methods, and support for Scoped Lifetimes
    • โž• Added ContainerResolutionException that can help you to diagnose exactly what caused the error
    • โœ‚ Removed CommonServiceLocator from Prism.Wpf
    • โšก๏ธ Updates to Xamarin.Forms 4.6 - Adds InvokeOnMainThreadAsync methods to IDeviceService
    • โž• Adds Async helpers to avoid async void without blocking the UI Thread
    • Adds brand new Prism.Forms.Regions package to bring classic Regions support to Xamarin.Forms projects. NOTE It'll be a while before we get docs for this. In the mean time, look at the WPF docs on Regions as the API is ALMOST entirely the same. You can also look at the E2E app for Forms in the Prism repo
    • โšก๏ธ Updates to Xamarin.Forms 4.8
    • ๐Ÿ”„ Changed the Behavior of the Prism.Forms DialogService. We no longer reparent the content of the currently visible ContentPage. We now use a Modal Page with newly added support for transparent Modal Page backgrounds from Xamarin.Forms
    • ๐Ÿ”„ Changed the definition of IModuleManager and added several helper methods to make it even easier to manage and load your Modules
    • โšก๏ธ Updated Prism.Forms INavigationService with method calls/extensions that were previously on the now removed IPlatformNavigation
    • ๐Ÿ‘Œ Support for automatic resolution and injection Func<T>, Lazy<T>, and IEnumerable<T>
    • Made the ViewModelLocator.AutowireViewModel property Opt-Out rather than Opt-In for WPF & Uno Platform
    • โœ‚ Removed the DependencyResolver integration with Xamarin.Forms

    ๐Ÿ”„ Changes:

    • ๐Ÿ”€ 4049b3e Merge pull request #2181 from PrismLibrary/transparent-modal
    • 3edc501 fix iOS modal transparency
    • ๐Ÿ”€ 6daceb0 Merge pull request #2180 from PrismLibrary/module-manager
    • โœ… 75256c0 add tests for the ModuleManager Extensions
    • 413ca57 add ModuleInfo collection to IModuleManager
    • ๐Ÿ”€ 5a06d41 Merge pull request #2178 from PrismLibrary/remove-lagcy-bootstrappers
    • โœ… 59d1eba fixing test - change in underlying DryIoc API reference
    • 44de606 fix moq resolution with DryIocContainerExtension
    • ๐Ÿšš 88b90b9 removed legacy bootstrapper
    • ๐Ÿ”€ d5cb510 Merge pull request #2176 from PrismLibrary/remove-logger ๐Ÿ‘€ See More
    • โœ… f1bf6ca add missing shared test project
    • ๐Ÿ“„ 48c2533 fixing xml docs
    • ๐Ÿšš 86510aa remove ILoggerFacade
    • ๐Ÿ”€ 463d18a Merge pull request #2175 from PrismLibrary/xaml-catalog
    • ๐Ÿ”€ c200a23 Merge pull request #2174 from Reapism/patch-1
    • ๐Ÿ— 3c45cd0 comment out post build task
    • โช 760e306 reverted .net core target version
    • โœ… 3fee86e added tests and fixed backwards compatibility for old file path
    • ๐Ÿ— 20e0cb8 fixed xcopy command to run on the build server
    • โœ… b3016d8 added some tests
    • ๐Ÿšš 061d078 removed old API for creating xaml catalogs
    • 382e691 renamed xaml module catalog
    • 6efa943 implemented new XamlResourceCatalog
    • 6f3f297 Fix some formatting and comments.
    • ๐Ÿ”€ 7b614ec Merge pull request #2173 from PrismLibrary/remove-platform-di
    • ๐Ÿ”€ 23527f7 Merge pull request #2172 from PrismLibrary/platformnavigation
    • ๐Ÿšš 43a3cbb remove DependencyResolver test
    • โšก๏ธ a4fe2aa link updates
    • โšก๏ธ 086d30c update deprecated Icon to use IconImageSource
    • ๐Ÿšš 0b1ac68 removes the dependency resolver from PrismApplication
    • ๐Ÿ”€ 818495b merge IPlatformNavigationService into INavigationService
    • ๐Ÿšš 1a355be Remove ILoggerFacade from PageNavigationService
    • ๐Ÿ”€ 522799b Merge pull request #2171 from PrismLibrary/vml-opt-out
    • ๐Ÿšš 30a5b5b remove debug code
    • c31d9d8 make viewmodellocator opt-out
    • ๐Ÿ”€ 43d1545 Merge pull request #2169 from PrismLibrary/transparent-modals
    • โšก๏ธ 05e9a73 updating tests
    • 0ca6e0e use modal page
    • ๐Ÿ”€ d1646c3 Merge pull request #2168 from PrismLibrary/region-fixes
    • ๐Ÿ“ฆ 591bdb0 remove GitHub packages
    • 92283bd use base region
    • ๐Ÿ›  b83ffd4 change to RegisterForRegionNavigation - fixes #2166
    • ๐Ÿ“ฆ d9f8368 Merge pull request #2165 from PrismLibrary/package-descriptions
    • โšก๏ธ 9fa8493 update package descriptions
    • ๐Ÿ”€ 804739e Merge pull request #2077 from PrismLibrary/wip-regions
    • 09ecf4a hold back CollectionView Adapter
    • 3726ad1 fix LayoutView bindings
    • 468f1ff simplifying Carousel Item Binding
    • โšก๏ธ 614a038 Merge pull request #2164 from ebariche/dev/eb/update-to-uno-3
    • โšก๏ธ cb93dd9 Update to Uno 3.0
    • โšก๏ธ e995276 updates and fixes for Carousels and registration
    • โšก๏ธ bc2fadb Registration updates
    • ๐Ÿ”€ 829475b Merge pull request #2163 from Algorithman/DirectoryModuleCatalogSpelling
    • ๐Ÿ›  29167bc Fixed spelling error: GetNotAlreadyLoadedModuleInfos
    • 493b91f handle null RegionManager on Region
    • โšก๏ธ c5729b7 build updates
    • โšก๏ธ 2317805 Update Region Module demos
    • โšก๏ธ 46f38e4 update module registrations
    • 8d2b2eb implementing adapters
    • 9525981 use delegate registration for Region Adapter Mappings & Behaviors
    • 16e376a fixing sln file
    • ๐Ÿšš b70f870 remove support for Partial Views
    • c1fa5dd delay region created and tracking of INavigationService
    • 3c3460c Fixing lifecycle so Region created once fully parented to the Page
    • ed97ba9 fixing sln file
    • 099f27e adding Prism.Forms.Regions to main solution
    • 17c3225 getting Region Navigation working
    • 2d793b9 adding Region Module to E2E app
    • dc59903 fixing Module State
    • โšก๏ธ 75e8db4 update to Xamarin.Forms 4.5
    • 34863fa cross-plat sharing and region manager implementation
    • b023dd6 wip regions
    • ๐Ÿ”€ 59cc94b Merge pull request #2147 from Jesus805/master
    • ๐Ÿ”€ 4906e5f Merge pull request #2143 from PrismLibrary/lifo
    • โœ… 01f629a adding test suite for containers
    • 6c5344e allow multiple registrations with Last In First Out
    • โšก๏ธ c71957a updated readme with pluralsight links
    • โšก๏ธ 8bcca7c Update SelectorItemsSourceSyncBehavior.cs
    • ๐Ÿ”€ 4eeacaf Merge pull request #2146 from Jesus805/master
    • ๐Ÿ“š 6d44a1e XML Documentation for Dryloc.Wpf, Unity.Wpf and Prism.Core
    • ๐Ÿ”€ 10365d5 Merge pull request #2145 from Jesus805/master
    • ๐Ÿšš 302d93d Removed extra to
    • ec3fad3 space
    • d9a0853 Added XML comments to IDialogParameters
    • ๐Ÿ›  88f69bc Fixed some spelling mistakes in ParametersBase
    • ๐Ÿ”€ b2be9cc Merge pull request #2067 from Jesus805/master
    • ๐Ÿ”€ 695606b Merge pull request #2069 from gayaK/master
    • 750a914 add Prism.Templates issue link
    • ๐Ÿ“š 6e7a514 Removed duplicate catalog documentation parameter
    • efe9497 Changed IModuleCatalogExtensions comment
    • ๐Ÿ“š a4c0bf0 Add documentation to various classes in Prism.Wpf
    • ๐Ÿ“š 6964272 Added Documentation to PrismApplication
    • ๐Ÿ“š 41f7cd8 Added Documentation to IModuleCatalogExtensions
    • ๐Ÿ“š ebf8724 Added documentation to MVVMHelpers
    • ๐Ÿ”€ 03cdfaa Merge pull request #2139 from unoplatform/dev/jela/uno-fix-ios
    • โช a2a956e ci: Reduce nuget restore logging level to normal
    • 65f6cf2 fix(uno): Fix iOS e2e is not starting properly
    • ๐Ÿ”€ 00834e9 Merge pull request #2138 from MikelThief/MikelThief-readme-patch
    • ๐Ÿ“ฆ 34c94c5 Fix link to Uno Nuget package
    • 83e8865 Merge pull request #2122 from bmarinov/feature/use_recommended_dryioc_cfg_method
    • ๐Ÿ”€ a7ae9d9 Merge pull request #2136 from janschreier/NameCorrection
    • ๐Ÿ”€ 2c7765b Merge pull request #2133 from PrismLibrary/sourcelink
    • 1b8a823 Renamed IDestructibleRegionBehavior to DestructibleRegionBehavior
    • ๐Ÿ— b64d6ac simplify deterministic build
    • ๐Ÿšš 21322cd move packing logic into src folder
    • ๐Ÿšš a7908b7 remove deprecated test
    • ๐Ÿ— 00edb25 bump sdk to 3.1.300 for build prop fixes
    • โœ… a8f19f2 use boots for latest stable sdks
    • โšก๏ธ a66981e sourcelink and deterministic build updates
    • ๐Ÿ“ฆ 09abd76 embed License in package
    • ๐Ÿ“ฆ 8ab8773 publish symbols packages
    • ๐Ÿšš 7d5360f removed IMasterDetailPageOptions from sample
    • ๐Ÿ”ง 7519bd9 Replace deprecated dryioc configuration method call
    • 7b0e6d6 call Xamarin.Forms Init
    • โšก๏ธ 6d8ee46 Merge pull request #2113 from unoplatform/dev/jela/playstore-update
    • โšก๏ธ 5d9a418 test: Adjust for updated android SDK Android-28 emulator name
    • ๐Ÿ”€ 6244391 Merge pull request #2110 from PrismLibrary/scopednavigation
    • โœ… 0374fcb all disable UI Tests
    • 2a69d55 ensure the PrismApplication is created before we set a main page
    • 6544370 fixing issue with DryIoc injecting a Page to IPageAware
    • โช 165e697 let Xamarin.Forms restore transitively
    • โšก๏ธ 34f5f76 update test dependencies
    • โšก๏ธ 87c793b update Unity.Container
    • ac6b487 adding shared container
    • 2896142 fixing Scoped Navigation
    • 5c33d8c scope navigation
    • ๐Ÿ”€ 527faaf Merge pull request #2103 from rssllgrrtt/Adding-Device.InvokeOnMainThreadAsync-to-DeviceService-#2043
    • ๐Ÿšš 1b7218c Removed view centric hooks from DeviceService
    • ๐Ÿ”€ b6faee2 Merge pull request #2108 from unoplatform/dev/jela/uwp-fix
    • ๐Ÿ”€ ca30a61 Merge pull request #2105 from d3fkn1ght/xmlDocs2
    • cb7620b Fix ContainerProviderExtensionFixture
    • โšก๏ธ a27288e Updated TargetFrameworks, updated to XF 4.6.0.726 and added support for additional methods and properties from the Device class.
    • ๐Ÿ e06a353 fix(uno): Fix Windows initialization sequence
    • 3ee01c9 fix: Adjust xml comment in DryIocContainerExtension
    • ๐Ÿ”€ ee6a519 Merge pull request #2107 from PrismLibrary/issue-2106
    • 227ea29 using the ContainerLocator as the VML resolver.
    • ๐Ÿ”ง 845f263 Revert "fixed ConfigureViewModelLocator"
    • ๐Ÿ”ง 4dd403b fixed ConfigureViewModelLocator
    • 72f1a35 Added documenation for:
    • ba493ca wrap ctors
    • 24945db setup containers for container extensions
    • โšก๏ธ 581c3f5 Updated to latest Xamarin.Forms (4.5.0.657) and mapped to new Device.InvokeOnMainThreadAsync methods
    • ๐Ÿšš 876e930 Remove ContainerProviderExtension from UnoPlatform
    • โ™ป๏ธ e8622d6 Refactoring unit test codes
    • ๐Ÿ”€ 5c14ec4 Merge remote-tracking branch 'remotes/prism/master'
    • โœ… 6270fbe Add unit test for ContainerProviderExtension
    • fff8023 Add XmlnsDefinition of Prism.Ioc namespace.
    • ๐Ÿ“š 27487ef Fix documentation comment for ContainerProviderExtension.cs
    • 94155bb Added a "BeginInvokeOnMainThreadAsync" method to "IDeviceService"
    • ๐Ÿ”€ 8597347 Merge pull request #2101 from unoplatform/dev/jela/uwp-fix
    • ๐Ÿ”€ d243376 Merge pull request #2100 from unoplatform/dev/jela/android-test-optional
    • be92542 fix(uno-uwp): Disable library layout generation
    • ๐Ÿ— 6bba1a5 fix(uno-e2e): Disable build fail on android UI tests failure
    • ๐Ÿ“„ 7e4e92a fixing bad docs
    • ๐Ÿ”€ 076a7cf Merge pull request #2073 from WaldemarCoding/master
    • 722c45a changes requested by dan
    • ๐Ÿ”€ 631660a Merge pull request #2075 from d3fkn1ght/xmlDocs1
    • 22d8eda implement dans comments
    • bb2efd3 Solved CS1591 in INavigationParamters[Internal].cs
    • e0e865e Missed one
    • 3d48ffc Resolved some CS1573,1591
    • ๐Ÿ”€ df64def Merge pull request #2097 from PrismLibrary/prismapplication-tests
    • โšก๏ธ e91dc8a Update ParametersBase.cs
    • โœ… 3c983f9 added tests for PrismApplicationBase
    • ๐Ÿ”€ 2f077f9 Merge pull request #2096 from PrismLibrary/bootstrapper-tests
    • ๐Ÿ”€ 43f7f5b Merge pull request #2086 from PrismLibrary/containerextensions
    • โœ… 95d1c2a disable randomly failing test
    • โœ… 6cd9106 Added test to validate required types were registered
    • โœ… 2036140 adding tests for Container Registrations
    • ๐Ÿ”€ 82325a9 Merge pull request #2084 from PrismLibrary/task-extensions
    • โœ… 5f55d28 added unit tests
    • 82b6bca added Task extensions for async/void tasks
    • ๐Ÿ”€ 130ed2a Merge pull request #2094 from unoplatform/dev/jela/uwp-adjust
    • f26ee78 fixing file location
    • ๐Ÿšš 507652f fix(WinUI): Remove explicit dependency on CommonServiceLocator
    • fa2fd01 fix(Uno): Adjust Prism.Uno UWP library layout
    • โœ… a99eeed adding tests for ContainerResolutionException
    • โœ… 439bc9d fixing mocked test
    • 0๏ธโƒฃ 70ba338 adding DefaultRules to DryIocContainerExtension
    • 936e3df implementing registration overloads
    • 14b1cc0 adding ContainerResolutionException #2078
    • 4d898d4 adding CreateScope
    • ๐Ÿšš 0cb5b2e remove extra space
    • ๐Ÿ”€ 9f75d1a Merge pull request #2089 from PrismLibrary/autoregister
    • 460c0b8 fixing uno rebase
    • โœ… 2f4b0f5 fixing issues with parallel tests
    • โœ… 9bdc2ea adding tests for AutoRegisterForNavigation - fixes #2088
    • ๐Ÿ”€ 66a24a9 Merge pull request #2092 from PrismLibrary/bootstrapper-tests
    • โœ… 94b4462 Added unit tests for new PrismBootstrapperBase
    • ๐Ÿ”€ 05c82a2 Merge pull request #2091 from lv1il0s/master
    • ๐Ÿ“ฆ 2c434c0 Move reference to Xamarin.Forms.Mocks to nuget/packageReference
    • ๐Ÿ”€ 291d1fe Merge pull request #2090 from unoplatform/dev/jela/uitests-adjust
    • ๐ŸŽ b0dcdee fix(uno): Use set-runtime step to set the mono version used on macOS builds
    • โœ… 017ed03 fix: Adjust Dialog test to use the default dialog
    • โช e072949 fix: Restore default test context to WebAssembly
    • ๐Ÿ”€ 1d4a962 Merge pull request #2054 from unoplatform/dev/jela/upstream-merge
    • ๐Ÿšš d8e47c2 Remove unused Dialog from Uno e2e sample
    • โšก๏ธ a418c7e Update uno libraries to make UWP use conditional to Windows host
    • 3c916c3 Align Uno PrismAppliationBase with common PrismInitializationExtensions
    • f85446c Use HasBinding for Wpf/Uno in place of BindingOperations.GetBinding
    • 0๏ธโƒฃ a63b29f Add Uno Default implementation for IDialogWindow
    • ๐Ÿšš 359f3fb Move Uno Suspending to PrismApplicationBase
    • 19d0cb5 Use Forms modularity for Uno implementation
    • โšก๏ธ efa56f2 Update Uno sample to include a module
    • ๐Ÿ‘ cb57f7e Add Uno support for InvokeCommandAction
    • โช eb82da6 restore modularity imports
    • โœ… 073790c Enable Uno Wasm UI Testing
    • ed292e8 Enable easier net48 cross-targeting
    • ๐Ÿ‘ c109f91 Add support for Uno Platform and WinUI
    • 032fd5e fixing E2E status badges
    • โ™ป๏ธ 47dc850 Merge pull request #2085 from PrismLibrary/parameter-refactor
    • โ™ป๏ธ b14cac8 refactored parameter classes to use ParametersBase class
    • ๐Ÿ”€ edefb5a Merge pull request #2081 from EdwardBlair/2080
    • bc32e36 TIL: template donesn't have an enabled property
    • ๐Ÿšš e99fcf1 Remove whacky predicate logic and use enabled property
    • โšก๏ธ dfd9693 Update ParameterExtension.cs
    • โšก๏ธ 13ea1df Update ErrorsContainer.cs
    • โšก๏ธ ae08e5f Update IDestructible.cs
    • โšก๏ธ 0f05a87 Update ErrorsContainer.cs
    • โšก๏ธ a1139fd Update ErrorsContainer.cs
    • โšก๏ธ 7b5d73e Update ParametersExtensions.cs
    • โšก๏ธ 46fb645 Update ParametersBase.cs
    • โšก๏ธ 13fbbfe Update ParameterExtension.cs
    • 1f1a9d9 Actually they do look prettier this way
    • 7f381cd Fix csproj paths
    • โœ… fec2a83 use dotnet test powershell task instead of VSTest
    • โœ… 0269c98 Re-collate Prism.Forms tests
    • ba3d1cd Prettify names
    • 4427f76 Missing colons
    • e59d568 Attempt at #2080
    • ๐Ÿ”€ 4a109d6 Merge pull request #2074 from PrismLibrary/bootstrapper-api
    • โ™ป๏ธ 80949a7 refactored duplicate code
    • 241930c added some more comments
    • 8f9423a small improvements
    • โšก๏ธ 21266d6 Updated sample to be cross "app/bootstrapper" compatible
    • eba083e Added new PrismBootstrapper API
    • ๐Ÿ“š af4811b Merge pull request #2063 from d3fkn1ght/documentation
    • โšก๏ธ f92701b Update ParametersBase.cs
    • โšก๏ธ c9d0ef4 Update ParametersBase.cs
    • โšก๏ธ aad61dd Update ParametersBase.cs
    • 7bded0f Add ContainerProviderExtension
    • ๐Ÿ”€ 8b24d8c Merge pull request #2065 from Jesus805/master
    • โšก๏ธ bc39433 Update ParametersBase.cs
    • โช 646cf1c Reverted IDialogResult and DialogResult comments
    • 09c154f Forgot a single period
    • ๐Ÿ“š 122e410 Added Documentation for Dialogs [#2064 ]
    • โšก๏ธ 1d817a7 Update IModuleInfoGroup.cs
    • โšก๏ธ c5f9a38 Update IModuleInfo.cs
    • โšก๏ธ 79c6211 Update IModuleInfo.cs
    • โšก๏ธ 534891b Update IModuleInfo.cs

    ๐Ÿ— This list of changes was auto generated.

  • v8.0.0.1740 Changes

    May 05, 2020

    Description

    ๐Ÿšš This is the initial Prism 8 Preview! There are lots of changes including some major breaks as noted by the major version bump. Many of the obsolete API's in Prism 7 have now been removed in Prism 8.

    Highlights

    • ๐Ÿ— Prism.Uno... Introducing Prism for Uno / WinUI. Note that if you are building a straight WinUI/UWP app there is no dependency on Uno even though you will need to install the Prism.Uno packages.
    • ๐Ÿ‘ More robust Container Abstractions now allow registering Factory / Delegate methods, and support for Scoped Lifetimes
    • โž• Added ContainerResolutionException that can help you to diagnose exactly what caused the error
    • โœ‚ Removed CommonServiceLocator from Prism.Wpf
    • โšก๏ธ Updates to Xamarin.Forms 4.6 - Adds InvokeOnMainThreadAsync methods to IDeviceService
    • โž• Adds Async helpers to avoid async void without blocking the UI Thread

    ๐Ÿ”„ Changes:

    • ๐Ÿ”€ 6244391 Merge pull request #2110 from PrismLibrary/scopednavigation
    • โœ… 0374fcb all disable UI Tests
    • 2a69d55 ensure the PrismApplication is created before we set a main page
    • 6544370 fixing issue with DryIoc injecting a Page to IPageAware
    • โช 165e697 let Xamarin.Forms restore transitively
    • โšก๏ธ 34f5f76 update test dependencies
    • โšก๏ธ 87c793b update Unity.Container
    • ac6b487 adding shared container
    • 2896142 fixing Scoped Navigation
    • 5c33d8c scope navigation ๐Ÿ‘€ See More
    • ๐Ÿ”€ 527faaf Merge pull request #2103 from rssllgrrtt/Adding-Device.InvokeOnMainThreadAsync-to-DeviceService-#2043
    • ๐Ÿšš 1b7218c Removed view centric hooks from DeviceService
    • ๐Ÿ”€ b6faee2 Merge pull request #2108 from unoplatform/dev/jela/uwp-fix
    • ๐Ÿ”€ ca30a61 Merge pull request #2105 from d3fkn1ght/xmlDocs2
    • โšก๏ธ a27288e Updated TargetFrameworks, updated to XF 4.6.0.726 and added support for additional methods and properties from the Device class.
    • ๐Ÿ e06a353 fix(uno): Fix Windows initialization sequence
    • 3ee01c9 fix: Adjust xml comment in DryIocContainerExtension
    • ๐Ÿ”€ ee6a519 Merge pull request #2107 from PrismLibrary/issue-2106
    • 227ea29 using the ContainerLocator as the VML resolver.
    • ๐Ÿ”ง 845f263 Revert "fixed ConfigureViewModelLocator"
    • ๐Ÿ”ง 4dd403b fixed ConfigureViewModelLocator
    • 72f1a35 Added documenation for:
    • ba493ca wrap ctors
    • 24945db setup containers for container extensions
    • โšก๏ธ 581c3f5 Updated to latest Xamarin.Forms (4.5.0.657) and mapped to new Device.InvokeOnMainThreadAsync methods
    • 94155bb Added a "BeginInvokeOnMainThreadAsync" method to "IDeviceService"
    • ๐Ÿ”€ 8597347 Merge pull request #2101 from unoplatform/dev/jela/uwp-fix
    • ๐Ÿ”€ d243376 Merge pull request #2100 from unoplatform/dev/jela/android-test-optional
    • be92542 fix(uno-uwp): Disable library layout generation
    • ๐Ÿ— 6bba1a5 fix(uno-e2e): Disable build fail on android UI tests failure
    • ๐Ÿ“„ 7e4e92a fixing bad docs
    • ๐Ÿ”€ 076a7cf Merge pull request #2073 from WaldemarCoding/master
    • 722c45a changes requested by dan
    • ๐Ÿ”€ 631660a Merge pull request #2075 from d3fkn1ght/xmlDocs1
    • 22d8eda implement dans comments
    • bb2efd3 Solved CS1591 in INavigationParamters[Internal].cs
    • e0e865e Missed one
    • 3d48ffc Resolved some CS1573,1591
    • ๐Ÿ”€ df64def Merge pull request #2097 from PrismLibrary/prismapplication-tests
    • โšก๏ธ e91dc8a Update ParametersBase.cs
    • โœ… 3c983f9 added tests for PrismApplicationBase
    • ๐Ÿ”€ 2f077f9 Merge pull request #2096 from PrismLibrary/bootstrapper-tests
    • ๐Ÿ”€ 43f7f5b Merge pull request #2086 from PrismLibrary/containerextensions
    • โœ… 95d1c2a disable randomly failing test
    • โœ… 6cd9106 Added test to validate required types were registered
    • โœ… 2036140 adding tests for Container Registrations
    • ๐Ÿ”€ 82325a9 Merge pull request #2084 from PrismLibrary/task-extensions
    • โœ… 5f55d28 added unit tests
    • 82b6bca added Task extensions for async/void tasks
    • ๐Ÿ”€ 130ed2a Merge pull request #2094 from unoplatform/dev/jela/uwp-adjust
    • f26ee78 fixing file location
    • ๐Ÿšš 507652f fix(WinUI): Remove explicit dependency on CommonServiceLocator
    • fa2fd01 fix(Uno): Adjust Prism.Uno UWP library layout
    • โœ… a99eeed adding tests for ContainerResolutionException
    • โœ… 439bc9d fixing mocked test
    • 0๏ธโƒฃ 70ba338 adding DefaultRules to DryIocContainerExtension
    • 936e3df implementing registration overloads
    • 14b1cc0 adding ContainerResolutionException #2078
    • 4d898d4 adding CreateScope
    • ๐Ÿšš 0cb5b2e remove extra space
    • ๐Ÿ”€ 9f75d1a Merge pull request #2089 from PrismLibrary/autoregister
    • 460c0b8 fixing uno rebase
    • โœ… 2f4b0f5 fixing issues with parallel tests
    • โœ… 9bdc2ea adding tests for AutoRegisterForNavigation - fixes #2088
    • ๐Ÿ”€ 66a24a9 Merge pull request #2092 from PrismLibrary/bootstrapper-tests
    • โœ… 94b4462 Added unit tests for new PrismBootstrapperBase
    • ๐Ÿ”€ 05c82a2 Merge pull request #2091 from lv1il0s/master
    • ๐Ÿ“ฆ 2c434c0 Move reference to Xamarin.Forms.Mocks to nuget/packageReference
    • ๐Ÿ”€ 291d1fe Merge pull request #2090 from unoplatform/dev/jela/uitests-adjust
    • ๐ŸŽ b0dcdee fix(uno): Use set-runtime step to set the mono version used on macOS builds
    • โœ… 017ed03 fix: Adjust Dialog test to use the default dialog
    • โช e072949 fix: Restore default test context to WebAssembly
    • ๐Ÿ”€ 1d4a962 Merge pull request #2054 from unoplatform/dev/jela/upstream-merge
    • ๐Ÿšš d8e47c2 Remove unused Dialog from Uno e2e sample
    • โšก๏ธ a418c7e Update uno libraries to make UWP use conditional to Windows host
    • 3c916c3 Align Uno PrismAppliationBase with common PrismInitializationExtensions
    • f85446c Use HasBinding for Wpf/Uno in place of BindingOperations.GetBinding
    • 0๏ธโƒฃ a63b29f Add Uno Default implementation for IDialogWindow
    • ๐Ÿšš 359f3fb Move Uno Suspending to PrismApplicationBase
    • 19d0cb5 Use Forms modularity for Uno implementation
    • โšก๏ธ efa56f2 Update Uno sample to include a module
    • ๐Ÿ‘ cb57f7e Add Uno support for InvokeCommandAction
    • โช eb82da6 restore modularity imports
    • โœ… 073790c Enable Uno Wasm UI Testing
    • ed292e8 Enable easier net48 cross-targeting
    • ๐Ÿ‘ c109f91 Add support for Uno Platform and WinUI
    • 032fd5e fixing E2E status badges
    • โ™ป๏ธ 47dc850 Merge pull request #2085 from PrismLibrary/parameter-refactor
    • โ™ป๏ธ b14cac8 refactored parameter classes to use ParametersBase class
    • ๐Ÿ”€ edefb5a Merge pull request #2081 from EdwardBlair/2080
    • bc32e36 TIL: template donesn't have an enabled property
    • ๐Ÿšš e99fcf1 Remove whacky predicate logic and use enabled property
    • โšก๏ธ dfd9693 Update ParameterExtension.cs
    • โšก๏ธ 13ea1df Update ErrorsContainer.cs
    • โšก๏ธ ae08e5f Update IDestructible.cs
    • โšก๏ธ 0f05a87 Update ErrorsContainer.cs
    • โšก๏ธ a1139fd Update ErrorsContainer.cs
    • โšก๏ธ 7b5d73e Update ParametersExtensions.cs
    • โšก๏ธ 46fb645 Update ParametersBase.cs
    • โšก๏ธ 13fbbfe Update ParameterExtension.cs
    • 1f1a9d9 Actually they do look prettier this way
    • 7f381cd Fix csproj paths
    • โœ… fec2a83 use dotnet test powershell task instead of VSTest
    • โœ… 0269c98 Re-collate Prism.Forms tests
    • ba3d1cd Prettify names
    • 4427f76 Missing colons
    • e59d568 Attempt at #2080
    • ๐Ÿ”€ 4a109d6 Merge pull request #2074 from PrismLibrary/bootstrapper-api
    • โ™ป๏ธ 80949a7 refactored duplicate code
    • 241930c added some more comments
    • 8f9423a small improvements
    • โšก๏ธ 21266d6 Updated sample to be cross "app/bootstrapper" compatible
    • eba083e Added new PrismBootstrapper API
    • ๐Ÿ“š af4811b Merge pull request #2063 from d3fkn1ght/documentation
    • โšก๏ธ f92701b Update ParametersBase.cs
    • โšก๏ธ c9d0ef4 Update ParametersBase.cs
    • โšก๏ธ aad61dd Update ParametersBase.cs
    • ๐Ÿ”€ 8b24d8c Merge pull request #2065 from Jesus805/master
    • โšก๏ธ bc39433 Update ParametersBase.cs
    • โช 646cf1c Reverted IDialogResult and DialogResult comments
    • 09c154f Forgot a single period
    • ๐Ÿ“š 122e410 Added Documentation for Dialogs [#2064 ]
    • โšก๏ธ 1d817a7 Update IModuleInfoGroup.cs
    • โšก๏ธ c5f9a38 Update IModuleInfo.cs
    • โšก๏ธ 79c6211 Update IModuleInfo.cs
    • โšก๏ธ 534891b Update IModuleInfo.cs
    • โšก๏ธ d23846c Update IModuleInfo.cs
    • โšก๏ธ cb32be0 Update IModuleInfo.cs
    • โšก๏ธ b58f275 Update ParametersBase.cs
    • โšก๏ธ 0c9d30c Update ParametersBase.cs
    • โšก๏ธ 8f045c2 Update ParametersBase.cs
    • โšก๏ธ e0e889f Update ParametersBase.cs
    • โšก๏ธ e4a525a Update ParametersBase.cs
    • โš  2eb175e Fixed some CS1572, 1573, 1574 and 1591 warnings
    • ๐Ÿ”€ 07997a6 Merge pull request #2060 from PrismLibrary/containerinfo
    • 531b8df migrate to internals namespace
    • 54e9c9c add ContainerInfo simplify RegionNavigationContentLoader
    • bf68db3 fixing race condition
    • 23eda19 fix naming
    • ๐Ÿ”€ d1a17d8 Merge pull request #2056 from PrismLibrary/containerprovider
    • 5fad681 fixing names
    • 4e3edcb fixing issue with GetCandidatesFromRegion
    • โ™ป๏ธ 1ac0d24 shared test refactorings
    • โ™ป๏ธ 261cedf Refactor ContainerLocator for Lazy initialization
    • ๐Ÿšš d9f7ebe move container extensions to shared projects
    • โœ… 2cfa5cc sharing tests
    • โ™ป๏ธ 0d24b8a refactor Regions to inject IContainerExtension
    • โœ… c0e2786 fixing tests for ContainerLocator
    • d8f6dd4 removing CommonServiceLocator
    • d735c5f add ContainerLocator
    • ๐Ÿ”€ 92623ef Merge pull request #2053 from PrismLibrary/ea-filter-overload
    • โšก๏ธ 1bcc496 update deprecated NuGet Task Installer
    • c1cdd32 added overload for EA to provide filter
    • ๐Ÿ”€ 3ab9483 Merge pull request #2050 from PrismLibrary/restructure
    • 658d985 fix wpf e2e app path
    • โšก๏ธ 822e808 update publish task
    • 3569bb3 migrate wpf sandbox to e2e
    • d1e03c4 fixing break with xunit assembly
    • โšก๏ธ c318991 build prop updates
    • 5b4d78d fixing paths
    • b1b8707 project restructure
    • โœ… fd75a4a adding dialog test for Modal display
    • ๐Ÿ”€ 7aa54f5 Merge pull request #2044 from valerii-sovytskyi/patch-1
    • ๐Ÿ”€ 40881ea Merge pull request #2036 from d3fkn1ght/FirstPR
    • ๐Ÿ”€ a25ec89 Merge pull request #2022 from PrismLibrary/core31
    • fb27d00 changing target framework for core3.1 changes
    • eaf8145 add rollforward
    • โšก๏ธ a08ed4a update to netcoreapp3.1
    • d078355 only sourcelink in CI
    • ๐Ÿ— 3d787c2 switch codesign for CI builds
    • 8db8bc9 specify code sign
    • โšก๏ธ 9a714e0 Update DialogService to support modal pages
    • โšก๏ธ c7847f6 Update bug_report.md
    • โšก๏ธ de35df9 Update PageNavigationService.cs
    • โšก๏ธ e37f4a1 Update INavigationService.cs
    • ๐Ÿ›  294fd8b Fixed typo in xml comment
    • โšก๏ธ 9f73977 Added and updated comments
    • โœ… f06761e added test for generic RegisterViewWithRegion
    • ๐Ÿ”€ 257e763 Merge pull request #2029 from PrismLibrary/issue-2026
    • ee20851 added RegiserMappings generic method
    • ๐Ÿ”€ 030d31c Merge pull request #2028 from PrismLibrary/Issue-2027
    • e833665 added RegisterViewWithRegion generic method
    • ๐Ÿ”€ e122c45 Merge pull request #2015 from PrismLibrary/strongname
    • e4def4a enable strong name signing for Prism.DryIoc
    • ๐Ÿ”€ 1b00d1c Merge pull request #2017 from PrismLibrary/uitest
    • 9e222e8 Delete ask-a-question.md
    • 4b08072 Create config.yml
    • 93c7fbf skip waiting for results
    • aa27ba1 re-enable parameters
    • โšก๏ธ 109d13f update project paths
    • โœ… 61c5a33 point at test-cloud.exe
    • bee29bd set node version
    • โœ… d733290 don't specify test-cloud.exe path
    • a033413 use mac host
    • b524c9f hardcoding app
    • 7948f2c hardcode appName & devices
    • ๐Ÿ— 0d71d05 user Build ArtifactStagingDirectory
    • 1b9db7c fully qualify tools path
    • โœ… 46d6167 reference test-cloud.exe
    • ๐Ÿš€ 984b47a seperate NuGet deploy to new stage
    • ๐Ÿšš d62fcc3 remove frameworkOption
    • 9f56154 disable prepare
    • 76b144c limit Repl to Debug
    • 34eb3a7 simplifying paths
    • ๐Ÿšš a71a9b6 move artifacts to artifacts folder
    • โšก๏ธ 5ef8175 updating paths
    • 8d9f829 fixing paths
    • โšก๏ธ 609b332 update pipeline workspace listing
    • โšก๏ธ 5150553 update list artifact working directory
    • โšก๏ธ c86fa5b update paths
    • โšก๏ธ 1f2fa40 update dependson
    • ๐Ÿ‘ท c5100b2 fix job name
    • โ™ป๏ธ e2871eb refactor uitesting
    • 30ba3a5 wildcard apk
    • 4be3a90 fixing bad paths because of BL
    • 812285b fix solution path
    • ๐Ÿ‘ท ca6714b dependOn Sandbox Android job
    • โœ… f73a580 adding uitest to pipeline
    • โšก๏ธ 9bce971 UI Test Updates
    • ๐Ÿ”’ fad2a86 Create lock.yml
    • ๐Ÿ”€ 74b5ef6 Merge pull request #2000 from PrismLibrary/behaviorfactory
    • 73b4fd1 Only expose ApplyPageBehaviors
    • ๐Ÿ”€ 09f946c Merge pull request #1993 from michael-hawker/patch-1
    • โšก๏ธ fbb50f4 ๐Ÿฆ™ Update blog link that was 404ing
    • ๐Ÿ”€ d19dfb2 Merge pull request #1992 from PrismLibrary/Issue-1982
    • ๐Ÿ”€ 568699b Merge pull request #1991 from PrismLibrary/moduleinfo
    • bbf626b made methods virtual [#1982 ]
    • ๐Ÿ”Š 0a40616 support XAML Module Catalogs
    • โšก๏ธ 6b2a4b0 Merge pull request #1981 from PrismLibrary/sandbox-update
    • 34ef1bc fixing class name
    • โœ… 5d12469 setting up for UI Testing
    • ๐Ÿš€ 4d986d9 use generated ReleaseNotes.md
    • ๐Ÿš€ f99cbeb fix conditions in release notes
    • ๐Ÿš€ 0497645 update release notes
    • 2ed516a add output verbosity
    • 400f4b2 removing unneeded versioning
    • c9bc5b7 run dotnet publish on WPF app
    • 1b4c42d fix App Center requirement for Id not Name
    • ๐Ÿš€ 7189de5 consolidating App Center distribution with release notes
    • โœ… 1c2ba75 adding test functionality for Modules
    • โšก๏ธ 9853eb3 Sandbox updates
    • b6a6b98 Add labels
    • cac97e8 fix artifact name
    • ๐Ÿ”€ 4ea0713 Merge pull request #1932 from PrismLibrary/sandbox
    • ๐Ÿ— a6b70de generate XML docs for all builds
    • ๐Ÿ— cc8ce0e remove binary artifacts from iOS build
    • โšก๏ธ f7c4f24 updating artifact copy
    • 9abf826 debug output
    • โ™ป๏ธ 4165b01 refactoring Artifact Copy
    • 84fdf3c use relative path

    ๐Ÿ— This list of changes was auto generated.

  • v7.2.0.708 Changes

    December 04, 2018

    ๐Ÿš€ Special Release

    This is a special preview for Microsoft Connect.

    Prism.WPF

    • ๐Ÿ‘ #1544: .Net Core 3 Support
    • #1601: InitializeModules() should be called even if there's no shell

    Prism.Forms

    • #1589: OnNavigatedFrom method is not called when changing detail on MasterDetailPage
    • #1615: Add the ability to switch tabs
    • #1625: Master Detail to Tab Page Navigation broken in 7.1
    • ๐Ÿ‘Œ Support for Xamarin Forms developers using 4.0 pre1 to use the new Prism namespace to access all vital Prism types from XAML

      <ContentPage xmlns:prism="http://prismlibrary.com"\> <ListView> <ListView.Behaviors> <prism:EventToCommandBehavior ... /> </ListView.Behaviors> </ListView> </ContentPage>

    ๐Ÿ Prism.Windows

    • ๐Ÿ†• New guidance - Merged with Template 10
  • v7.2.0.1422 Changes

    November 21, 2019

    Prism 7.2 SR1

    ๐Ÿš€ This is a service release for Prism 7.2. This includes several small bug fixes as noted in the Change Log and changes to make conversions from query string parameters to strong types including Enums more reliable.

    ๐Ÿ”„ Changes:

    • ๐Ÿ”€ a2231be Merge pull request #1953 from PrismLibrary/enum-autoinitialize
    • ๐Ÿ‘ 053eb30 Fixing Enum Support to allow setting from numeric or string
    • โœ… 26e090c included tests for each function changed + considered enum name or value during conversion
    • โœ… cbacc3f included tests for each function changed + considered enum name or value during conversion
    • ๐Ÿ”€ ed16196 Merge pull request #1952 from PrismLibrary/dialog-bindingcontext
    • ๐Ÿ›  bb835e2 ensure content maintains Binding Context fixes #1948
    • โšก๏ธ 5201fb5 update exempt labels
    • ๐Ÿ”€ 4ad0fca Merge pull request #1951 from fredyadriano90/INavigationPageOptions-Type
    • โšก๏ธ b3243c8 Update INavigationPageOptions.cs ๐Ÿ‘€ See More 90828a1 Open generic pages and double tabs navigation (#1943) ๐Ÿ”€ 543f539 Merge pull request #1945 from AmrAlSayed0/patch-1 โšก๏ธ c9a11d9 Update PrismApplicationBase.cs ๐Ÿ›  aab10a4 Fixes NRE when app put to sleep when MainPage isn't set ๐Ÿ”€ 178d9a8 Merge pull request #1931 from PrismLibrary/dialogServiceFixes โœ… b760621 Adding Unit Tests for DialogService ๐Ÿ›  cd42169 null handler for callback fixes #1883 ๐Ÿ›  0c35b6b fixes #1894 โšก๏ธ c1486f2 general updates & fixes for tooling changes that broke SDK Extras ๐Ÿ”€ a4c131a Merge pull request #1919 from akamud/return-exception-confirm-nav ๐Ÿ‘ป 931484e Return Navigation Exception for Navigations when ConfirmNavigation is false โœ… 0c0b5b2 Provide tests for ConfirmNavigation exception scenarios โšก๏ธ 6a49e0e Update packages link ๐Ÿ”€ ff8da00 Merge pull request #1868 from PrismLibrary/shelldialog ๐Ÿ”Š dafde8a Support Shell for Dialogs fixes #1865 ๐Ÿ›  ef3d803 fixed #1857 ๐Ÿ— This list of changes was auto generated.
  • v7.2.0.1367 Changes

    July 24, 2019

    Summary

    ๐Ÿš€ Prism 7.2 represents some major fundamental changes. Be sure to read the release notes in full. In addition to adding several new great API's there are some major breaking changes particularly for Xamarin.Forms developers.

    Prism.Core

    • #1668: Expands IoC abstractions to allow checking for registered services and naming instances or singletons.
    • ๐Ÿ›  #1680: Fixes Ambiguous match when using DelegateCommand.ObserveProperty
    • #1677: Changes IContainerRegistry to provide a Fluent API
    • โšก๏ธ #1796: Optimize Weak DelegateReference for EventAggregator

    Prism.Forms

    • #1589: OnNavigatedFrom method is not called when changing detail on MasterDetailPage
    • #1615: Add the ability to switch tabs
    • #1625: Master Detail to Tab Page Navigation broken in 7.1
    • #1683: Add navigation animation or modal navigation with XAML Navigation Extensions
    • โ™ป๏ธ #1663: Refactored platform navigation methods
    • #1669: Allow Create/Destroy Action Sheet buttons with only a name. Allow passing tuples to Navigation Service
    • #1700: Platform Specific View Registration not respected
    • #1704: Make XAML Navigation Extensions inherit from BindableObject. Make properties Bindable
    • #1748: [BREAKING] Make INavigatingAware Obsolete and introduce IInitialize, IInitializeAsync & IAutoInitialize
    • ๐Ÿ‘ #1754: Fully support bindings for XAML Navigation
    • #1757: Add Automatic View Registration
    • ๐Ÿšš #1806: Removes FastExpressionCompiler for DryIoc due to iOS incompatibility
    • ๐Ÿ”Š #1814: Adding DialogService
    • ๐Ÿ‘ป #1822: Enhancing Modal Logic to reduce/eliminate need to specify modal navigation when Navigating Back. Enhances Navigation Exception Messaging with new NavigationException class
    • ๐Ÿ”Š #1842: Fixes reparenting bug for DialogService in XF 4.X on Android with Screen Reader enabled

    View/ViewModel Initialization

    ๐Ÿ— After numerous user survey's and interviews it became apparent that the intent of INavigatingAware had been become unclear and that users were actually overwhelmingly asking for a breaking change. INavigatingAware is no longer supported. For those who may be using OnNavigatingTo with INavigationAware this will be most impactful as a behavior change as INavigatingAware has been removed from INavigationAware meaning that it will no longer be called. For those who have implemented INavigatingAware directly you will see a build error. The impact should be minimal by simply renaming all instances of INavigatingAware to Initialize.

    Using IAutoInitialize

    0๏ธโƒฃ IAutoInitialize is designed for those cases where you are passing objects around. By default we do a Non-Case-Sensitive lookup between the Navigation|Dialog Parameters and the Properties in your ViewModel. If one is found we will automatically try to set the property for you.

    \_navigationService.NavigateAsync("ViewB" ("title", "Hello World"), ("fooBar", "some other value"));public class ViewBViewModel : IAutoInitialize{ public string Title { get; set; } public string FooBar { get; set; } }
    

    In the above example your ViewModel will be initialized with the values passed in the NavigationParameters or DialogParameters. If these are static variables (meaning the won't change during the lifecycle of your View/ViewModel you would not need to implement INotifyPropertyChanged for them.

    public class ViewBViewModel{ [AutoInitialize(true) public string Title { get; set; } [AutoInitialize("fooBar") public string Foo { get; set; } }
    

    ๐Ÿ‘ป In this example you'll notice that we have some slight variations where we have added NavigationParameter attributes. The attributes allow you to decorate your properties to make them Required or specify a different name that you will use in your NavigationParameters. Note that if you make a property Required and you fail to pass the parameter this will throw an Exception that you will need to check for in the NavigationResult.

    Automatic View Registration

    Automatic Registration can be used for either an Application or Module. Note that there is an optional Automatic property. When Automatic is set to true Prism will not look for any attributes but will simply look for any contained types that are a Page type. If there is a Page type it will automatically be registered.

    [AutoRegisterForNavigation]public class App : PrismApplication{ } [AutoRegisterForNavigation(Automatic = true)]public class AwesomeModule : IModule{ }
    

    Using the Dialog Service

    โšก๏ธ The Dialog Service operates by updating the current ContentPage's layout and placing a new View over the top of the existing Content, and then unwinding the changes back to it's original state. This gives the appearance of a Popup similar to what you may see when using Prism.Plugin.Popups but is driven entirely by native Xamarin.Forms.

    Custom Alert Custom Dialog
    Custom Alert Custom Dialog

    ๐Ÿ”Š The Dialog Service provides for a lot of flexibility and customization to help you produce dialogs that look and feel like they belong in your app. This includes an ability to shift the position, change the mask color or provide an entire custom mask layer.

    To Start you simply need to implement IDialogAware, and raise the RequestClose event when you are ready to close the dialog.

    public class DemoDialogViewModel : BindableBase, IDialogAware, IAutoInitialize{ public DemoDialogViewModel() { CloseCommand = new DelegateCommand(() =\> RequestClose(null)); } private string title = "Message"; public string Title { get =\> title; set =\> SetProperty(ref title, value); } private string message; [AutoInitialize(true)] // Makes Message parameter requiredpublic string Message { get =\> message; set =\> SetProperty(ref message, value); } public DelegateCommand CloseCommand { get; } public event Action\<IDialogParameters\> RequestClose; public bool CanCloseDialog() =\> true; public void OnDialogClosed() { Console.WriteLine("The Demo Dialog has been closed..."); } public void OnDialogOpened(IDialogParameters parameters) { // No need to do anything as IAutoInitialize will take care of what we need here... } }
    
    \<?xml version="1.0" encoding="utf-8" ?\> \<Grid xmlns="http://xamarin.com/schemas/2014/forms"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"xmlns:prism="http://prismlibrary.com" prism:ViewModelLocator.AutowireViewModel="True" prism:DialogLayout.RelativeWidthRequest="{OnIdiom Default=0.75, Desktop=0.5}"BackgroundColor="White"x:Class="HelloWorld.Views.DemoDialog"\> \<Grid.RowDefinitions\> \<RowDefinition Height="Auto" /\> \<RowDefinition Height="Auto" /\> \<RowDefinition Height="Auto" /\> \</Grid.RowDefinitions\> \<BoxView Color="Black" /\> \<Label Text="{Binding Title}"Style="{DynamicResource TitleStyle}"Margin="20,5"TextColor="White" /\> \<Label Text="{Binding Message}"Margin="20,0,20,10" Grid.Row="1" /\> \<Button Text="Ok"Command="{Binding CloseCommand}"HorizontalOptions="Center"Margin="0,0,0,10" Grid.Row="2"/\> \</Grid\>
    

    With your View and ViewModel created you now need to register the Dialog to use it. This can be registered in your App.xaml.cs or in a Module.

    protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterDialog\<DemoDialog, DemoDialogViewModel\>(); }
    

    Prism.WPF

    • ๐Ÿ‘ #1296: Support for IDestructilbe in WPF projects
    • ๐Ÿ‘ #1544: .Net Core 3 Support
    • #1601: InitializeModules() should be called even if there's no shell
    • #1676: Ambiguous match found when ObserveProperty
    • ๐Ÿ”Š #1666: A New IDialogService for WPF
    • โšก๏ธ #1732: Updated .NET Core 3 DirectoryModuleCatalog
    • ๐ŸŽ #1796: WeakDelegatesManager::RemoveListener performance
    • 0๏ธโƒฃ #1805: Attached RegionManager to Dialog by default
    • #1826: Using Enum for IDialogResult.Result

    ๐Ÿ”Š A New IDialogService for WPF

    ๐Ÿ Currently, the only way to show any type of dialog with Prism is by using the PopupWindowAction in combination with System.Windows.Interactivity. To be honest, I really dislike this approach. It's over complex, highly verbose, difficult to implement, and is very limited. The limitations are covered pretty well in Issue #864

    ๐Ÿ”Š Instead, I created a new IDialogService API that will replace the PopupWindowAction altogether. This service will allow developers to show any dialog they want either modal, or non-modal, and have complete control over their dialog logic.

    The implementation looks like this:

    public interface IDialogService{ void Show(string name, IDialogParameters parameters, Action\<IDialogResult\> callback); void ShowDialog(string name, IDialogParameters parameters, Action\<IDialogResult\> callback); }
    

    ๐Ÿ”Š The idea here is that Prism will no longer provide any built-in dialogs like Notification or Confirmation. Mainly because the Prism implementations are UGLY and will never match the styling of your beautiful WPF application. So, it's important that you are able to register your own dialogs.

    Create Your Dialog View

    ๐Ÿ‘‰ Your dialog view is a simple UserControl that can be designed anyway you please. The only requirement it has a ViewModel that implements IDialogAware set as it's DataContext. Preferably, it will utilize the ViewModelLocator

    \<UserControl x:Class="HelloWorld.Dialogs.NotificationDialog"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:prism="http://prismlibrary.com/" prism:ViewModelLocator.AutoWireViewModel="True"Width="300" Height="150"\> \<Grid x:Name="LayoutRoot" Margin="5"\> \<Grid.RowDefinitions\> \<RowDefinition /\> \<RowDefinition Height="Auto" /\> \</Grid.RowDefinitions\> \<TextBlock Text="{Binding Message}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0" TextWrapping="Wrap" /\> \<Button Command="{Binding CloseDialogCommand}" CommandPrameter="true" Content="OK" Width="75" Height="25" HorizontalAlignment="Right" Margin="0,10,0,0" Grid.Row="1" IsDefault="True" /\> \</Grid\> \</UserControl\>
    

    Create Your Dialog ViewModel

    Next you need a ViewModel that implements IDialogAware which is defined as follows

    public interface IDialogAware{ bool CanCloseDialog(); void OnDialogClosed(); void OnDialogOpened(IDialogParameters parameters); string Title { get; set; } event Action\<IDialogResult\> RequestClose; }
    

    Here is a simple example of what an IDialogAware ViewModel may look like.

    public class NotificationDialogViewModel : BindableBase, IDialogAware{ private DelegateCommand\<string\> \_closeDialogCommand; public DelegateCommand\<string\> CloseDialogCommand =\>\_closeDialogCommand ?? (\_closeDialogCommand = new DelegateCommand\<string\>(CloseDialog)); private string \_message; public string Message { get { return \_message; } set { SetProperty(ref \_message, value); } } private string \_title = "Notification"; public string Title { get { return \_title; } set { SetProperty(ref \_title, value); } } public event Action\<IDialogResult\> RequestClose; protected virtual void CloseDialog(string parameter) { ButtonResult result = ButtonResult.None; if (parameter?.ToLower() == "true") result = ButtonResult.OK; else if (parameter?.ToLower() == "false") result = ButtonResult.Cancel; RaiseRequestClose(new DialogResult(result)); } public virtual void RaiseRequestClose(IDialogResult dialogResult) { RequestClose?.Invoke(dialogResult); } public virtual bool CanCloseDialog() { return true; } public virtual void OnDialogClosed() { } public virtual void OnDialogOpened(IDialogParameters parameters) { Message = parameters.GetValue\<string\>("message"); } }
    

    Register the Dialog

    To register a dialog, you must have a View (UserControl) and a corresponding ViewModel (which must implement IDialogAware). In the RegisterTypes method, simply register your dialog like you would any other service by using the IContainterRegistery.RegisterDialog method.

     protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterDialog\<NotificationDialog, NotificationDialogViewModel\>(); }
    

    Using the Dialog Service

    To use the dialog service you simply ask for the service in your VM ctor.

    public MainWindowViewModel(IDialogService dialogService) { \_dialogService = dialogService; }
    

    ๐Ÿ”Š Then call either Show or ShowDialog providing the name of the dialog, any parameters your dialogs requires, and then handle the result via a call back

    private void ShowDialog() { var message = "This is a message that should be shown in the dialog."; //using the dialog service as-is\_dialogService.ShowDialog("NotificationDialog", new DialogParameters($"message={message}"), r =\> { if (r.Result == ButtonResult.None) Title = "Result is None"; else if (r.Result == ButtonResult.OK) Title = "Result is OK"; else if (r.Result == ButtonResult.Cancel) Title = "Result is Cancel"; elseTitle = "I Don't know what you did!?"; }); }
    

    Simplify your Application Dialog APIs

    ๐Ÿ”Š The intent of the dialog API is not to try and guess exactly what type of parameters your need for all of your dialogs, but rather to just create and show the dialogs. To simplify common dialogs in your application the guidance will be to create an extension methods to simplify your applications dialogs.

    For example:

    public static class DialogServiceExtensions{ public static void ShowNotification(this IDialogService dialogService, string message, Action\<IDialogResult\> callBack) { dialogService.ShowDialog("NotificationDialog", new DialogParameters($"message={message}"), callBack); } }
    

    Then to call your Notifications use the new and improved API that you created specifically for your app.

    \_dialogService.ShowNotification(message, r =\>{ if (r.Result == ButtonResult.None) Title = "Result is None"; else if (r.Result == ButtonResult.OK) Title = "Result is OK"; else if (r.Result == ButtonResult.Cancel) Title = "Result is Cancel"; elseTitle = "I Don't know what you did!?"; });
    

    Register a Custom Dialog Window

    ๐Ÿ”Š It's very common to be using a third-party control vendor such as Infragistics. In these cases, you may want to replace the standard WPF Window control that hosts the dialogs with a custom Window class such as the Infragistics XamRibbonWindow control.

    In this case, just create your custom Window, and implement the IDialogWindow interface:

    public partial class MyRibbonWindow: XamRibbonWindow, IDialogWindow{ public IDialogResult Result { get; set; } โ€ฆ. }
    

    Then register your dialog window with the IContainerRegistry.

    protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterDialogWindow\<MyRibbonWindow\>(); }
    

    ๐Ÿ’… Style the DailogWindow

    ๐Ÿ’… You can control the properties of the DialogWindow by using a style via an attatched property on the Dialog UserControl

    \<prism:Dialog.WindowStyle\> \<Style TargetType="Window"\> \<Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen" /\> \<Setter Property="ResizeMode" Value="NoResize"/\> \<Setter Property="ShowInTaskbar" Value="False"/\> \<Setter Property="SizeToContent" Value="WidthAndHeight"/\> \</Style\> \</prism:Dialog.WindowStyle\>
    

    ๐Ÿšš To clarify, this is to replace the PopupWindowAction. I want to remove that mess completely from Prism

    ๐Ÿ”„ Changes:

    • ๐Ÿ”€ 21b5bac Merge pull request #1846 from Thieum/patch-1
    • 25f09c8 typo
    • ๐Ÿ”€ 5dbd2e2 Merge pull request #1843 from andreinitescu/PartialViewsImprovements
    • โšก๏ธ b200a01 Merge pull request #1842 from PrismLibrary/dialogupdates ๐Ÿ‘€ See more be326d0 fix for Android SDK bug with Azure Pipelines f141c2f fixing presentation issues & allow exclusion of Mask layer 94de081 Fix reparenting issue 2c195c2 add CloseOnBackgroundTapped property fef2e42 Partial views changes d9c170f adding assembly outputs ๐Ÿšš 9221073 remove working directory ๐Ÿ”€ 941897f Merge pull request #1829 from PrismLibrary/modal ๐Ÿš€ 2cfed95 fixing GitHub release โœ… 8695396 fixing tests for unregistered View ๐Ÿ›  7b0e1a4 Enhance Modal & Exception handling. fixes #1822 f4ff482 adding SelectTabExtension 3856412 fixing returned value ๐Ÿšš 355e130 remove unnecessary references ๐Ÿ”€ b885ff5 Merge pull request #1825 from PrismLibrary/dialogservice ๐Ÿ”Š a2b2d34 Unify Xaml Parameters for Dialogs and Navigation 6596ebf adding ParameterBase 4048484 removing dependency on NavigationParameter e811939 add ItemsSource 6fb6998 OnNavigatingTo โ™ป๏ธ 75d6db5 Refactoring for better code sharing between Navigation and Dialog Parameters โฌ‡๏ธ fe5847b downgrade to Xamarin.Forms 3.6 for added compatibility ๐Ÿ”€ f76990b Merge pull request #1828 from PrismLibrary/core3-directorymodulecatalog โšก๏ธ 192735c Update DirectoryModuleCatalog.Core.cs 906583a add outputs for NavigationInterfaces d301c7d reset IsDialogHost property 24e54a1 add ability to provide custom mask (i.e. gradient layer) 1a49f73 fixing background tap dismissal ๐Ÿ”Š c20beae adding DialogService fixes #1814 ๐Ÿ”€ b4fb6c1 Merge pull request #1827 from PrismLibrary/xamlnav ๐Ÿ›  8422312 Fully support bindings for Xaml Navigation fixes #1754 โšก๏ธ aee7c10 Merge pull request #1826 from PrismLibrary/dialog-service-updates โšก๏ธ f124ac5 Update azure-pipelines.yml โšก๏ธ 33585f7 updated piplines ๐Ÿšš f288e18 removed setter from title 6f59946 Using Enum for Result ๐Ÿ”€ 1cc5f34 Merge branch 'master' into core3-directorymodulecatalog ๐Ÿ”€ 428df87 Merge pull request #1815 from hronlukas/master ๐Ÿ“š 4551d9c Merge pull request #1817 from mcavigelli/documentation-fixes โšก๏ธ cb41ff2 update deprecated build property 5547afc disable Forms Sandbox โšก๏ธ 56994a4 update Build Badges d4a7406 ensure global.json is in Sandbox directory ๐Ÿ— 6eda879 fixing sandbox build options ๐Ÿ‘ท 80b0aaf fixing job name a1a0df6 consolidating Xamarin.Forms dependency ๐Ÿšš 59a0fa4 Removed unused usings. ๐Ÿ“š 581e9d3 Tiny documentation fix. c036953 Typo ๐Ÿ”Š c4fa2f0 Do not override owner in DialogService โšก๏ธ 15588d0 update issue templates โšก๏ธ fdf1635 Update SourceLink โšก๏ธ 4f166f5 update for Multi-Stage Pipeline ๐Ÿšš 4e335f8 removed RegionManager from dialogservice โšก๏ธ 3367c5a update readme plugins and training f426e11 add AutoRegistrationViewNameProvider ๐Ÿ”€ da1fe79 Merge pull request #1808 from PrismLibrary/dryioc-ios ๐Ÿ›  418b52a fixes #1806 ๐Ÿšš 81ea86c remove RegisterForNavigationAttribute provide handler for allowing custom logic on AutoRegistering Views โšก๏ธ 792bd65 Dependency updates ๐Ÿ”€ eccb6e3 Merge pull request #1793 from hermestobias/master โšก๏ธ 381d56c Merge pull request #1807 from PrismLibrary/IDialogService-Updates 0๏ธโƒฃ 7f5b2e1 attached RegionManager to dialog by default 805eca4 working on .NET Core 3 module catalog ๐Ÿ”€ 0b589ce Merge pull request #1803 from noufionline/patch-2 โšก๏ธ 7c0e303 Update IDialogService.cs โฌ†๏ธ ff9641a Merge pull request #1798 from PrismLibrary/unity-upgrade โšก๏ธ d294912 updated Prism.Forms โšก๏ธ c794528 updated Prism.WPF to altest version of Unity ๐Ÿ’… 2aa53df Adhere to code style guidelines โšก๏ธ 886ffcf Optimize WeakDelegateReference by introducing TargetEquals, which takes 60% less time than comparing with Target if it's still alive, and makes WeakDelegate.RemoveListener take 90% less time in normal usage. ๐Ÿ”€ d5569a5 Merge pull request #1780 from PrismLibrary/automatic-registration 5c11a75 rename registration attribute to align with the AutoLoad API as AutoRegisterForNavigation ๐Ÿ”€ ae667e7 Merge pull request #1779 from PrismLibrary/IInitialize โšก๏ธ d654987 update from OnInitialized -> Initialize โšก๏ธ 3c175ab Updating DryIoc, Xamarin Forms & Test SDK ๐Ÿ‘ 170307e Adds support for View Registration by Attribute or automatic View Registration. ๐Ÿ›  2dbdd04 Implementing IInitialize fixes #1746 fixes #1748 eb49282 migrate Navigation back to Prism Forms โšก๏ธ a1d383d Merge pull request #1761 from PrismLibrary/IDialogService-Updates ๐Ÿ›  b5a43fd fixed ninject project โ™ป๏ธ c95d6cf Refactored DialogWindow attached properties โšก๏ธ 2507daf Merge pull request #1749 from PrismLibrary/IDialogService-Updates โšก๏ธ 273eab2 Merge branch 'master' into IDialogService-Updates ๐Ÿšš 36f8d81 removed dialog VM base class 6d23d45 removing UWP ๐Ÿ”€ 9623596 Merge pull request #1731 from bartlannoeye/Cleanup b6c9ab6 Cleanup project files ๐Ÿ”€ c0d9ed6 Merge pull request #1730 from PrismLibrary/forms36 6e1aa89 removing netstandard1.0 c139004 moving Android DependencyResolver to PrismApplicationBase โšก๏ธ a2bd997 updating Xamarin Forms and DryIoc โšก๏ธ 5111104 Merge pull request #1722 from PrismLibrary/IDialogService-Updates ๐Ÿšš e8effd4 removed Icon property โšก๏ธ 2d68c0f Merge pull request #1721 from PrismLibrary/IDialogService-Updates a6c8e84 added RegisterDialog method without VM requirement ๐Ÿ’… 6494cf4 added support to control DialogWindow from style ๐Ÿ”€ 04cc589 Merge pull request #1714 from noufionline/patch-2 โšก๏ธ c14d28d Update DialogService.cs ๐Ÿ”€ d476877 Merge pull request #1709 from PrismLibrary/WPF-IDestructible ๐Ÿ‘ df7414c added support for IDestructible ๐Ÿš€ 982d21f fixing release notes ๐Ÿ”€ a9e22df Merge pull request #1705 from PrismLibrary/fluent-containerregistry [#1677] ๐Ÿ›  45f6a18 Fluent API for IContainerRegistry fixes #1677 โšก๏ธ a041c7f Merge pull request #1704 from PrismLibrary/forms-updates โšก๏ธ cc74034 update Xamarin.Forms dec906e make NavigationExtension bindable 336a405 removing unneeded extensions ๐Ÿ”€ 779a290 Merge pull request #1703 from PrismLibrary/uwp-simplifications f50bcdb PrismApplication simplification ๐Ÿ”€ 2109273 Merge pull request #1702 from PrismLibrary/PlatformSpecificViewRegistration ๐Ÿ›  c8f208f fixes #1700 Platform specific Views not registered โœ… 8e22c9f Adding tests for Idiom and Platform specific View registrations ๐Ÿ”€ 508b5c8 Merge pull request #1685 from PrismLibrary/uwp-di ๐Ÿ”€ 9aaec2f Merge pull request #1684 from bares43/feature/XamlNavigationAnimated ๐Ÿ›  fac1d29 FrameFacade DI fixes f35fd65 fixing naming โšก๏ธ 2b503a2 updating Sandbox app to follow better MVVM patterns ab1b6ad simplify startup ๐Ÿ 6e81769 force use of Microsoft.NETCore.UniversalWindowsPlatform 6.1.9 due to 6.2.X being unlisted from NuGet 0๏ธโƒฃ fd2d1d2 call SetAsWindowContent by default โ™ป๏ธ d9d8782 dependency injection refactoring of UWP bc2de79 adding named service Resolve with parameters 55d5d45 xaml nav UseModalNavigation 4caf26b xamarin forms xaml navigation animated ๐Ÿ”€ 388d709 Merge pull request #1682 from PrismLibrary/Interactivity-Improvements 0b64623 added close dialog command to DialogViewModelBase ๐Ÿ”€ 4403abb Merge pull request #1680 from omerfarukz/master โšก๏ธ 6aa4b17 Merge pull request #1681 from PrismLibrary/buildupdates ed97ac3 simplify versioning 33c3a48 use preview1 โšก๏ธ 1571d33 package updates โœ… 6b05672 force use of latest netcore 3 sdk ๐Ÿ‘ e9136c3 added support for new dialog service to bootstrappers ๐Ÿš€ e9e27fb fixing release URL 62c3839 added obsolete attributes โ™ป๏ธ be17628 did some refactoring โช ae37468 rollback MSBuild.Sdk.Extras โšก๏ธ fa3eb5f update Patreon & Container notices ๐Ÿ— 53de9b5 simplify build versioning ๐Ÿš€ e878056 set Release Url as part of build โšก๏ธ 664b08c updating build resources 26c1832 Changed property observer to use property info instead of property name ๐Ÿ”€ e7cecd0 Merge pull request #1669 from PrismLibrary/api-enhancements 6506daf adding Tuple Navigation 3c1fdb3 add Cancel/Destroy buttons that have no action ๐Ÿ”€ b55b967 Merge pull request #1668 from PrismLibrary/iocabstractions a45d5bb Cleaning up API's 531a969 adding resolve with parameters f7e3624 Adding overloads for named instances ๐Ÿ›  5afe1cd expands IoC abstractions fixes #1654 b9fb480 consolidate forms reference โšก๏ธ 00acd99 package updates 9acdecd playing around with the dialog API ๐Ÿ”€ 32781cd Merge pull request #1665 from muhaym/patch-1 ๐Ÿ“š e2db76a Navigate Async Documentation fix 457c725 initial attempt at a new dialog service โ™ป๏ธ 7baeb32 Merge pull request #1663 from PrismLibrary/PlatformNav-Refactor โ™ป๏ธ 753fe5a Refactored platform navigation methods ๐Ÿ”€ 802ea9f Merge pull request #1662 from PrismLibrary/EventBase-Revert โช 57ad662 Reverted 9399b9d Merge pull request #1658 from Anapher/master_fixDelegateCommandTypo ๐Ÿ“š d627f73 Fix typo in documentation of DelegateCommand ๐Ÿ”€ 7e18e8a Merge pull request #1653 from cr1mp/patch-1 โšก๏ธ 1c2393a Update NavigationExtensionBase.cs ๐Ÿ”€ c33241a Merge pull request #1651 from PrismLibrary/core3-sdk bf1ee21 use public preview for .NET Core 3 โšก๏ธ 34e8042 Merge pull request #1650 from PrismLibrary/build-xf-update โšก๏ธ db63810 build updates af7f8d8 adding missing XmlnsDefinition ๐Ÿ”€ bee0480 Merge pull request #1643 from PrismLibrary/Bug1638-IModuleCatalog 37c23d9 registered the container extension c9b38d9 add XmlnsDefinition โšก๏ธ df68a49 update Unity & SourceLink ๐Ÿ”€ 136bb1e Merge pull request #1630 from MikelThief/master eba378f Fixing view discovery for Unity for UWP dff0050 Fixing view discovery for DryIoc for UWP โšก๏ธ fd8cf68 updated WPF projects to build 9754 of core 3 ๐Ÿ›  930e2b0 fixed #1625 ๐Ÿ”€ 21cf084 Merge pull request #1617 from PrismLibrary/tabbednavigation b0ad436 eliminate poptoroot โ™ป๏ธ 0f337f1 refactoring Tab Navigation to be consistent with other Navigation API's ๐Ÿ”€ 40febb8 Merge pull request #1616 from PrismLibrary/TabSwitching 2ee14f2 added SelectTab extension method for tabbedpages ๐Ÿ”€ 086759d Merge pull request #1609 from PrismLibrary/netcore3-support โœ… 871ca50 rerun failed tests โšก๏ธ de6ad67 update authors โœ… 9b643d9 install latest .netcore 3 sdk ๐Ÿ‘ 8600c4d added .NET Core 3 support โšก๏ธ dc2ad6e updated DryIoc tests ๐Ÿ”€ b00db55 Merge pull request #1607 from PrismLibrary/versionbump โœ… b4d2d18 ignore tests for deprecated Container c6e399e bump for Prism 7.2 e3f6569 removing Autofac โฌ†๏ธ 0197d31 Merge pull request #1606 from PrismLibrary/upgrade-tests โœ… 2a5e4e6 added debug directive to test โšก๏ธ cfa7c7c updated xamarin tests โœ… a58bdbb fixed service locator tests โšก๏ธ 76ea1b6 updating more tests ๐Ÿ›  2b3c91f fixed all compile errors ๐Ÿ”€ 9e283c1 Merge pull request #1604 from bartlannoeye/master โช 1f5a0fe Revert unstable install SDK script ๐Ÿ”€ fae5236 Merge pull request #1602 from dro123/master [#1601] dfcf1e1 Always call InitializeModules() in PrismApplicationBase even without a shell (#1601) 7b6b453 Don't crash in PrismApplicationBase.OnInitialized() if MainWindow is null ๐Ÿ”€ 84d21aa Merge pull request #1600 from bartlannoeye/AzureDevOps4UWP 7d088c5 One letter too much f364c2b Rename install-uwp-sdk_yml.yaml to install-uwp-sdk.yaml ๐Ÿšš 7c85432 Moved step yaml file in correct folder ๐Ÿšš b07cdf5 Call installing UWP SDK, remove devops trigger ๐Ÿ 197898d Add the Install Windows SDK powershell script ๐Ÿ”€ c4711a4 Merge pull request #1597 from bartlannoeye/UWPv7 ๐Ÿ 5521a0c Corrected default namespace for Prism.Unity.Windows ๐Ÿšš be5c45a Removed unused usings in UWP libraries ๐Ÿ 09c4c32 Merge pull request #1594 from Windows-XAML/master 3725fda Allowing for Fluent if they want it. โšก๏ธ 8314c7f Accepting update 97ec752 Correcting incorrect return type. 7c2f7a4 Correcting incorrect return type. ๐Ÿ”€ fbb32f5 Merge pull request #1592 from PrismLibrary/Issue-1589 [#1589] ๐Ÿ›  444bc5d fixed #1589 ๐Ÿ”€ bb7365c Merge pull request #1587 from Seikilos/patch-1 ๐Ÿ›  5c4e6ae Fixed myget urls ๐Ÿ ab96ab8 Merge pull request #1563 from Windows-XAML/master ๐Ÿ f555463 Returning the internface in Core, but enabling Remove() in Windows. ffe20a3 Removing ViewModelBase, I can add it to Template10.Extras db3f4c1 We're now caching the Frame.CurrentParameters in the FrameFacade so that when the user Refereshes, the operation has a reference to the parameter. 5453d90 The Gestures enum is/was redundant to the Gesture enum. ๐Ÿ 5d78bb4 Merge branch 'master' of https://github.com/Windows-XAML/Prism into cherry-branch ๐Ÿ”€ 2dce50b Merge pull request #1 from PrismLibrary/master ๐ŸŒฒ 32fcbdd Adding some extra logging after SetAutowireViewModel(); ๐Ÿ— This list of changes was auto generated.
  • v7.2.0.1347 Changes

    June 11, 2019

    ๐Ÿ”„ Changes:

    • d9c170f adding assembly outputs
    • ๐Ÿšš 9221073 remove working directory
    • ๐Ÿ”€ 941897f Merge pull request #1829 from PrismLibrary/modal
    • ๐Ÿš€ 2cfed95 fixing GitHub release
    • โœ… 8695396 fixing tests for unregistered View
    • ๐Ÿ›  7b0e1a4 Enhance Modal & Exception handling. fixes #1822
    • f4ff482 adding SelectTabExtension
    • 3856412 fixing returned value
    • ๐Ÿšš 355e130 remove unnecessary references
    • ๐Ÿ”€ b885ff5 Merge pull request #1825 from PrismLibrary/dialogservice ๐Ÿ‘€ See more ๐Ÿ”Š a2b2d34 Unify Xaml Parameters for Dialogs and Navigation 6596ebf adding ParameterBase 4048484 removing dependency on NavigationParameter e811939 add ItemsSource 6fb6998 OnNavigatingTo โ™ป๏ธ 75d6db5 Refactoring for better code sharing between Navigation and Dialog Parameters โฌ‡๏ธ fe5847b downgrade to Xamarin.Forms 3.6 for added compatibility ๐Ÿ”€ f76990b Merge pull request #1828 from PrismLibrary/core3-directorymodulecatalog โšก๏ธ 192735c Update DirectoryModuleCatalog.Core.cs 906583a add outputs for NavigationInterfaces d301c7d reset IsDialogHost property 24e54a1 add ability to provide custom mask (i.e. gradient layer) 1a49f73 fixing background tap dismissal ๐Ÿ”Š c20beae adding DialogService fixes #1814 ๐Ÿ”€ b4fb6c1 Merge pull request #1827 from PrismLibrary/xamlnav ๐Ÿ›  8422312 Fully support bindings for Xaml Navigation fixes #1754 โšก๏ธ aee7c10 Merge pull request #1826 from PrismLibrary/dialog-service-updates โšก๏ธ f124ac5 Update azure-pipelines.yml โšก๏ธ 33585f7 updated piplines ๐Ÿšš f288e18 removed setter from title 6f59946 Using Enum for Result ๐Ÿ”€ 1cc5f34 Merge branch 'master' into core3-directorymodulecatalog ๐Ÿ”€ 428df87 Merge pull request #1815 from hronlukas/master ๐Ÿ“š 4551d9c Merge pull request #1817 from mcavigelli/documentation-fixes โšก๏ธ cb41ff2 update deprecated build property 5547afc disable Forms Sandbox โšก๏ธ 56994a4 update Build Badges d4a7406 ensure global.json is in Sandbox directory ๐Ÿ— 6eda879 fixing sandbox build options ๐Ÿ‘ท 80b0aaf fixing job name a1a0df6 consolidating Xamarin.Forms dependency ๐Ÿšš 59a0fa4 Removed unused usings. ๐Ÿ“š 581e9d3 Tiny documentation fix. c036953 Typo ๐Ÿ”Š c4fa2f0 Do not override owner in DialogService โšก๏ธ 15588d0 update issue templates โšก๏ธ fdf1635 Update SourceLink โšก๏ธ 4f166f5 update for Multi-Stage Pipeline ๐Ÿšš 4e335f8 removed RegionManager from dialogservice โšก๏ธ 3367c5a update readme plugins and training f426e11 add AutoRegistrationViewNameProvider ๐Ÿ”€ da1fe79 Merge pull request #1808 from PrismLibrary/dryioc-ios ๐Ÿ›  418b52a fixes #1806 ๐Ÿšš 81ea86c remove RegisterForNavigationAttribute provide handler for allowing custom logic on AutoRegistering Views โšก๏ธ 792bd65 Dependency updates ๐Ÿ”€ eccb6e3 Merge pull request #1793 from hermestobias/master โšก๏ธ 381d56c Merge pull request #1807 from PrismLibrary/IDialogService-Updates 0๏ธโƒฃ 7f5b2e1 attached RegionManager to dialog by default 805eca4 working on .NET Core 3 module catalog ๐Ÿ”€ 0b589ce Merge pull request #1803 from noufionline/patch-2 โšก๏ธ 7c0e303 Update IDialogService.cs โฌ†๏ธ ff9641a Merge pull request #1798 from PrismLibrary/unity-upgrade โšก๏ธ d294912 updated Prism.Forms โšก๏ธ c794528 updated Prism.WPF to altest version of Unity ๐Ÿ’… 2aa53df Adhere to code style guidelines โšก๏ธ 886ffcf Optimize WeakDelegateReference by introducing TargetEquals, which takes 60% less time than comparing with Target if it's still alive, and makes WeakDelegate.RemoveListener take 90% less time in normal usage. ๐Ÿ”€ d5569a5 Merge pull request #1780 from PrismLibrary/automatic-registration 5c11a75 rename registration attribute to align with the AutoLoad API as AutoRegisterForNavigation ๐Ÿ”€ ae667e7 Merge pull request #1779 from PrismLibrary/IInitialize โšก๏ธ d654987 update from OnInitialized -> Initialize โšก๏ธ 3c175ab Updating DryIoc, Xamarin Forms & Test SDK ๐Ÿ‘ 170307e Adds support for View Registration by Attribute or automatic View Registration. ๐Ÿ›  2dbdd04 Implementing IInitialize fixes #1746 fixes #1748 eb49282 migrate Navigation back to Prism Forms โšก๏ธ a1d383d Merge pull request #1761 from PrismLibrary/IDialogService-Updates ๐Ÿ›  b5a43fd fixed ninject project โ™ป๏ธ c95d6cf Refactored DialogWindow attached properties โšก๏ธ 2507daf Merge pull request #1749 from PrismLibrary/IDialogService-Updates โšก๏ธ 273eab2 Merge branch 'master' into IDialogService-Updates ๐Ÿšš 36f8d81 removed dialog VM base class 6d23d45 removing UWP ๐Ÿ”€ 9623596 Merge pull request #1731 from bartlannoeye/Cleanup b6c9ab6 Cleanup project files ๐Ÿ”€ c0d9ed6 Merge pull request #1730 from PrismLibrary/forms36 6e1aa89 removing netstandard1.0 c139004 moving Android DependencyResolver to PrismApplicationBase โšก๏ธ a2bd997 updating Xamarin Forms and DryIoc โšก๏ธ 5111104 Merge pull request #1722 from PrismLibrary/IDialogService-Updates ๐Ÿšš e8effd4 removed Icon property โšก๏ธ 2d68c0f Merge pull request #1721 from PrismLibrary/IDialogService-Updates a6c8e84 added RegisterDialog method without VM requirement ๐Ÿ’… 6494cf4 added support to control DialogWindow from style ๐Ÿ”€ 04cc589 Merge pull request #1714 from noufionline/patch-2 โšก๏ธ c14d28d Update DialogService.cs ๐Ÿ”€ d476877 Merge pull request #1709 from PrismLibrary/WPF-IDestructible ๐Ÿ‘ df7414c added support for IDestructible ๐Ÿš€ 982d21f fixing release notes ๐Ÿ”€ a9e22df Merge pull request #1705 from PrismLibrary/fluent-containerregistry [#1677] ๐Ÿ›  45f6a18 Fluent API for IContainerRegistry fixes #1677 โšก๏ธ a041c7f Merge pull request #1704 from PrismLibrary/forms-updates โšก๏ธ cc74034 update Xamarin.Forms dec906e make NavigationExtension bindable 336a405 removing unneeded extensions ๐Ÿ”€ 779a290 Merge pull request #1703 from PrismLibrary/uwp-simplifications f50bcdb PrismApplication simplification ๐Ÿ”€ 2109273 Merge pull request #1702 from PrismLibrary/PlatformSpecificViewRegistration ๐Ÿ›  c8f208f fixes #1700 Platform specific Views not registered โœ… 8e22c9f Adding tests for Idiom and Platform specific View registrations ๐Ÿ”€ 508b5c8 Merge pull request #1685 from PrismLibrary/uwp-di ๐Ÿ”€ 9aaec2f Merge pull request #1684 from bares43/feature/XamlNavigationAnimated ๐Ÿ›  fac1d29 FrameFacade DI fixes f35fd65 fixing naming โšก๏ธ 2b503a2 updating Sandbox app to follow better MVVM patterns ab1b6ad simplify startup ๐Ÿ 6e81769 force use of Microsoft.NETCore.UniversalWindowsPlatform 6.1.9 due to 6.2.X being unlisted from NuGet 0๏ธโƒฃ fd2d1d2 call SetAsWindowContent by default โ™ป๏ธ d9d8782 dependency injection refactoring of UWP bc2de79 adding named service Resolve with parameters 55d5d45 xaml nav UseModalNavigation 4caf26b xamarin forms xaml navigation animated ๐Ÿ”€ 388d709 Merge pull request #1682 from PrismLibrary/Interactivity-Improvements 0b64623 added close dialog command to DialogViewModelBase ๐Ÿ”€ 4403abb Merge pull request #1680 from omerfarukz/master โšก๏ธ 6aa4b17 Merge pull request #1681 from PrismLibrary/buildupdates ed97ac3 simplify versioning 33c3a48 use preview1 โšก๏ธ 1571d33 package updates โœ… 6b05672 force use of latest netcore 3 sdk ๐Ÿ‘ e9136c3 added support for new dialog service to bootstrappers ๐Ÿš€ e9e27fb fixing release URL 62c3839 added obsolete attributes โ™ป๏ธ be17628 did some refactoring โช ae37468 rollback MSBuild.Sdk.Extras โšก๏ธ fa3eb5f update Patreon & Container notices ๐Ÿ— 53de9b5 simplify build versioning ๐Ÿš€ e878056 set Release Url as part of build โšก๏ธ 664b08c updating build resources 26c1832 Changed property observer to use property info instead of property name ๐Ÿ”€ e7cecd0 Merge pull request #1669 from PrismLibrary/api-enhancements 6506daf adding Tuple Navigation 3c1fdb3 add Cancel/Destroy buttons that have no action ๐Ÿ”€ b55b967 Merge pull request #1668 from PrismLibrary/iocabstractions a45d5bb Cleaning up API's 531a969 adding resolve with parameters f7e3624 Adding overloads for named instances ๐Ÿ›  5afe1cd expands IoC abstractions fixes #1654 b9fb480 consolidate forms reference โšก๏ธ 00acd99 package updates 9acdecd playing around with the dialog API ๐Ÿ”€ 32781cd Merge pull request #1665 from muhaym/patch-1 ๐Ÿ“š e2db76a Navigate Async Documentation fix 457c725 initial attempt at a new dialog service โ™ป๏ธ 7baeb32 Merge pull request #1663 from PrismLibrary/PlatformNav-Refactor โ™ป๏ธ 753fe5a Refactored platform navigation methods ๐Ÿ”€ 802ea9f Merge pull request #1662 from PrismLibrary/EventBase-Revert โช 57ad662 Reverted 9399b9d Merge pull request #1658 from Anapher/master_fixDelegateCommandTypo ๐Ÿ“š d627f73 Fix typo in documentation of DelegateCommand ๐Ÿ”€ 7e18e8a Merge pull request #1653 from cr1mp/patch-1 โšก๏ธ 1c2393a Update NavigationExtensionBase.cs ๐Ÿ”€ c33241a Merge pull request #1651 from PrismLibrary/core3-sdk bf1ee21 use public preview for .NET Core 3 โšก๏ธ 34e8042 Merge pull request #1650 from PrismLibrary/build-xf-update โšก๏ธ db63810 build updates af7f8d8 adding missing XmlnsDefinition ๐Ÿ”€ bee0480 Merge pull request #1643 from PrismLibrary/Bug1638-IModuleCatalog 37c23d9 registered the container extension c9b38d9 add XmlnsDefinition โšก๏ธ df68a49 update Unity & SourceLink ๐Ÿ”€ 136bb1e Merge pull request #1630 from MikelThief/master eba378f Fixing view discovery for Unity for UWP dff0050 Fixing view discovery for DryIoc for UWP โšก๏ธ fd8cf68 updated WPF projects to build 9754 of core 3 ๐Ÿ›  930e2b0 fixed #1625 ๐Ÿ”€ 21cf084 Merge pull request #1617 from PrismLibrary/tabbednavigation b0ad436 eliminate poptoroot โ™ป๏ธ 0f337f1 refactoring Tab Navigation to be consistent with other Navigation API's ๐Ÿ”€ 40febb8 Merge pull request #1616 from PrismLibrary/TabSwitching 2ee14f2 added SelectTab extension method for tabbedpages ๐Ÿ”€ 086759d Merge pull request #1609 from PrismLibrary/netcore3-support โœ… 871ca50 rerun failed tests โšก๏ธ de6ad67 update authors โœ… 9b643d9 install latest .netcore 3 sdk ๐Ÿ‘ 8600c4d added .NET Core 3 support โšก๏ธ dc2ad6e updated DryIoc tests ๐Ÿ”€ b00db55 Merge pull request #1607 from PrismLibrary/versionbump โœ… b4d2d18 ignore tests for deprecated Container c6e399e bump for Prism 7.2 e3f6569 removing Autofac โฌ†๏ธ 0197d31 Merge pull request #1606 from PrismLibrary/upgrade-tests โœ… 2a5e4e6 added debug directive to test โšก๏ธ cfa7c7c updated xamarin tests โœ… a58bdbb fixed service locator tests โšก๏ธ 76ea1b6 updating more tests ๐Ÿ›  2b3c91f fixed all compile errors ๐Ÿ”€ 9e283c1 Merge pull request #1604 from bartlannoeye/master โช 1f5a0fe Revert unstable install SDK script ๐Ÿ”€ fae5236 Merge pull request #1602 from dro123/master [#1601] dfcf1e1 Always call InitializeModules() in PrismApplicationBase even without a shell (#1601) 7b6b453 Don't crash in PrismApplicationBase.OnInitialized() if MainWindow is null ๐Ÿ”€ 84d21aa Merge pull request #1600 from bartlannoeye/AzureDevOps4UWP 7d088c5 One letter too much f364c2b Rename install-uwp-sdk_yml.yaml to install-uwp-sdk.yaml ๐Ÿšš 7c85432 Moved step yaml file in correct folder ๐Ÿšš b07cdf5 Call installing UWP SDK, remove devops trigger ๐Ÿ 197898d Add the Install Windows SDK powershell script ๐Ÿ”€ c4711a4 Merge pull request #1597 from bartlannoeye/UWPv7 ๐Ÿ 5521a0c Corrected default namespace for Prism.Unity.Windows ๐Ÿšš be5c45a Removed unused usings in UWP libraries ๐Ÿ 09c4c32 Merge pull request #1594 from Windows-XAML/master 3725fda Allowing for Fluent if they want it. โšก๏ธ 8314c7f Accepting update 97ec752 Correcting incorrect return type. 7c2f7a4 Correcting incorrect return type. ๐Ÿ”€ fbb32f5 Merge pull request #1592 from PrismLibrary/Issue-1589 [#1589] ๐Ÿ›  444bc5d fixed #1589 ๐Ÿ”€ bb7365c Merge pull request #1587 from Seikilos/patch-1 ๐Ÿ›  5c4e6ae Fixed myget urls ๐Ÿ ab96ab8 Merge pull request #1563 from Windows-XAML/master ๐Ÿ f555463 Returning the internface in Core, but enabling Remove() in Windows. ffe20a3 Removing ViewModelBase, I can add it to Template10.Extras db3f4c1 We're now caching the Frame.CurrentParameters in the FrameFacade so that when the user Refereshes, the operation has a reference to the parameter. 5453d90 The Gestures enum is/was redundant to the Gesture enum. ๐Ÿ 5d78bb4 Merge branch 'master' of https://github.com/Windows-XAML/Prism into cherry-branch ๐Ÿ”€ 2dce50b Merge pull request #1 from PrismLibrary/master ๐ŸŒฒ 32fcbdd Adding some extra logging after SetAutowireViewModel(); ๐Ÿ— This list of changes was auto generated.
  • v7.2.0.1233 Changes

    May 16, 2019

    This is the 3rd public preview for Prism 7.2.

    ๐Ÿ›  This preview provides a number of bug fixes and enhancements.

    Prism Core

    • #1668: Expands IoC abstractions to allow checking for registered services and naming instances or singletons.
    • ๐Ÿ›  #1680: Fixes Ambiguous match when using DelegateCommand.ObserveProperty
    • #1677: Changes IContainerRegistry to provide a Fluent API

    Prism.WPF

    • ๐Ÿ‘ #1296: Support for IDestructilbe in WPF projects
    • ๐Ÿ‘ #1544: .Net Core 3 Support
    • #1601: InitializeModules() should be called even if there's no shell
    • #1676: Ambiguous match found when ObserveProperty
    • ๐Ÿ”Š #1666: A New IDialogService for WPF

    ๐Ÿ”Š A New IDialogService for WPF

    ๐Ÿ Currently, the only way to show any type of dialog with Prism is by using the PopupWindowAction in combination with System.Windows.Interactivity. To be honest, I really dislike this approach. It's over complex, highly verbose, difficult to implement, and is very limited. The limitations are covered pretty well in Issue #864

    ๐Ÿ”Š Instead, I created a new IDialogService API that will replace the PopupWindowAction altogether. This service will allow developers to show any dialog they want either modal, or non-modal, and have complete control over their dialog logic.

    The implementation looks like this:

        public interface IDialogService
        {
            void Show(string name, IDialogParameters parameters, Action<IDialogResult> callback);
            void ShowDialog(string name, IDialogParameters parameters, Action<IDialogResult> callback);
        }
    

    ๐Ÿ”Š The idea here is that Prism will no longer provide any built-in dialogs like Notification or Confirmation. Mainly because the Prism implementations are UGLY and will never match the styling of your beautiful WPF application. So, it's important that you are able to register your own dialogs.

    Create Your Dialog View

    ๐Ÿ‘‰ Your dialog view is a simple UserContro l that can be designed anyway you please. The only requirement it has a ViewModel that implements IDialogAware set as it's DataContext. Preferably, it will utilize the ViewModelLocator

    <UserControl x:Class="HelloWorld.Dialogs.NotificationDialog"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:prism="http://prismlibrary.com/"
                 prism:ViewModelLocator.AutoWireViewModel="True"
                 Width="300" Height="150">
        <Grid x:Name="LayoutRoot" Margin="5">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
    
            <TextBlock Text="{Binding Message}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0" TextWrapping="Wrap" />
            <Button Command="{Binding CloseDialogCommand}" CommandPrameter="true" Content="OK" Width="75" Height="25" HorizontalAlignment="Right" Margin="0,10,0,0" Grid.Row="1" IsDefault="True" />
        </Grid>
    </UserControl>
    

    Create Your Dialog ViewModel

    Next you need a ViewModel that implements IDialogAware which is defined as follows

        public interface IDialogAware
        {
            bool CanCloseDialog();
            void OnDialogClosed();
            void OnDialogOpened(IDialogParameters parameters);
            string Title { get; set; }
            event Action<IDialogResult> RequestClose;
        }
    

    Here is a simple example of what an IDialogAware ViewModel may look like.

        public class NotificationDialogViewModel : BindableBase, IDialogAware
        {
            private DelegateCommand<string> _closeDialogCommand;
            public DelegateCommand<string> CloseDialogCommand =>
                _closeDialogCommand ?? (_closeDialogCommand = new DelegateCommand<string>(CloseDialog));
    
            private string _message;
            public string Message
            {
                get { return _message; }
                set { SetProperty(ref _message, value); }
            }
    
            private string _title = "Notification";
            public string Title
            {
                get { return _title; }
                set { SetProperty(ref _title, value); }
            }
    
            public event Action<IDialogResult> RequestClose;
    
            protected virtual void CloseDialog(string parameter)
            {
                bool? result = null;
    
                if (parameter?.ToLower() == "true")
                    result = true;
                else if (parameter?.ToLower() == "false")
                    result = false;
    
                RaiseRequestClose(new DialogResult(result));
            }
    
            public virtual void RaiseRequestClose(IDialogResult dialogResult)
            {
                RequestClose?.Invoke(dialogResult);
            }
    
            public virtual bool CanCloseDialog()
            {
                return true;
            }
    
            public virtual void OnDialogClosed()
            {
    
            }
    
            public virtual void OnDialogOpened(IDialogParameters parameters)
            {
                Message = parameters.GetValue<string>("message");
            }
        }
    

    Register the Dialog

    To register a dialog, you must have a View (UserControl) and a corresponding ViewModel (which must implement IDialogAware). In the RegisterTypes method, simply register your dialog like you would any other service by using the IContainterRegistery.RegisterDialog method.

     protected override void RegisterTypes(IContainerRegistry containerRegistry)
     {
         containerRegistry.RegisterDialog<NotificationDialog, NotificationDialogViewModel>();
     }
    

    Using the Dialog Service

    To use the dialog service you simply ask for the service in your VM ctor.

    public MainWindowViewModel(IDialogService dialogService)
    {
        _dialogService = dialogService;
    }
    

    ๐Ÿ”Š Then call either Show or ShowDialog providing the name of the dialog, any parameters your dialogs requires, and then handle the result via a call back

    private void ShowDialog()
    {
        var message = "This is a message that should be shown in the dialog.";
        //using the dialog service as-is
        _dialogService.ShowDialog("NotificationDialog", new DialogParameters($"message={message}"), r =>
        {
            if (!r.Result.HasValue)
                Title = "Result is null";
            else if (r.Result == true)
                Title = "Result is True";
            else if (r.Result == false)
                Title = "Result is False";
            else
                Title = "What the hell did you do?";
        });
    }
    

    Simplify your Application Dialog APIs

    ๐Ÿ”Š The intent of the dialog API is not to try and guess exactly what type of parameters your need for all of your dialogs, but rather to just create and show the dialogs. To simplify common dialogs in your application the guidance will be to create an extension methods to simplify your applications dialogs.

    For example:

    public static class DialogServiceEstensions
    {
        public static void ShowNotification(this IDialogService dialogService, string message, Action<IDialogResult> callBack)
        {
            dialogService.ShowDialog("NotificationDialog", new DialogParameters($"message={message}"), callBack);
        }
    }
    

    Then to call your Notifications use the new and improved API that you created specifically for your app.

        _dialogService.ShowNotification(message, r =>
        {
            if (!r.Result.HasValue)
                Title = "Result is null";
            else if (r.Result == true)
                Title = "Result is True";
            else if (r.Result == false)
                Title = "Result is False";
            else
                Title = "What the hell did you do?";
        });
    

    Register a Custom Dialog Window

    ๐Ÿ”Š It's very common to be using a third-party control vendor such as Infragistics. In these cases, you may want to replace the standard WPF Window control that hosts the dialogs with a custom Window class such as the Infragistics XamRibbonWindow control.

    In this case, just create your custom Window, and implement the IDialogWindow interface:

    public partial class MyRibbonWindow: XamRibbonWindow, IDialogWindow
    {
        public IDialogResult Result { get; set; }
        โ€ฆ.
    }
    

    Then register your dialog window with the IContainerRegistry.

     protected override void RegisterTypes(IContainerRegistry containerRegistry)
     {
         containerRegistry.RegisterDialogWindow<MyRibbonWindow>();
     }
    

    ๐Ÿ’… Style the DailogWindow

    ๐Ÿ’… You can control the properties of the DialogWindow by using a style via an attatched property on the Dialog UserControl

        <prism:Dialog.WindowStyle>
            <Style TargetType="Window">
                <Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen" />
                <Setter Property="ResizeMode" Value="NoResize"/>
                <Setter Property="ShowInTaskbar" Value="False"/>
                <Setter Property="SizeToContent" Value="WidthAndHeight"/>
            </Style>
        </prism:Dialog.WindowStyle>
    

    ๐Ÿšš To clarify, this is to replace the PopupWindowAction. I want to remove that mess completely from Prism

    Prism.Forms

    • #1589: OnNavigatedFrom method is not called when changing detail on MasterDetailPage
    • #1615: Add the ability to switch tabs
    • #1625: Master Detail to Tab Page Navigation broken in 7.1
    • #1683: Add navigation animation or modal navigation with XAML Navigation Extensions
    • โ™ป๏ธ #1663: Refactored platform navigation methods
    • #1669: Allow Create/Destroy Action Sheet buttons with only a name. Allow passing tuples to Navigation Service
    • #1700: Platform Specific View Registration not respected
    • #1704: Make XAML Navigation Extensions inherit from BindableObject. Make properties Bindable
    • #1748: [BREAKING] Make INavigatingAware Obsolete and introduce IInitialize, IInitializeAsync & IAutoInitialize
    • #1757: Add Automatic View Registration

    View/ViewModel Initialization

    ๐Ÿ— After numerous user survey's and interviews it became apparent that the intent of INavigatingAware had been become unclear and that users were actually overwhelmingly asking for a breaking change. INavigatingAware is no longer supported. For those who may be using OnNavigatingTo with INavigationAware this will be most impactful as a behavior change as INavigatingAware has been removed from INavigationAware meaning that it will no longer be called. For those who have implemented INavigatingAware directly you will see a build error. The impact should be minimal by simply renaming all instances of INavigatingAware to Initialize.

    Using IAutoInitialize

    0๏ธโƒฃ IAutoInitialize is designed for those cases where you are passing objects around. By default we do a Non-Case-Sensitive lookup between the Navigation Parameters and the Properties in your ViewModel. If one is found we will automatically try to set the property for you.

    \_navigationService.NavigateAsync("ViewB" ("title", "Hello World"), ("fooBar", "some other value"));public class ViewBViewModel : IAutoInitialize{ public string Title { get; set; } public string FooBar { get; set; } }
    

    In the above example your ViewModel will be initialized with the values passed in the NavigationParameters. If these are static variables (meaning the won't change during the lifecycle of your View/ViewModel you would not need to implement INotifyPropertyChanged for them.

    public class ViewBViewModel{ [NavigationParameter(true) public string Title { get; set; } [NavigationParameter("fooBar") public string Foo { get; set; } }
    

    ๐Ÿ‘ป In this example you'll notice that we have some slight variations where we have added NavigationParameter attributes. The attributes allow you to decorate your properties to make them Required or specify a different name that you will use in your NavigationParameters. Note that if you make a property Required and you fail to pass the parameter this will throw an Exception that you will need to check for in the NavigationResult.

    Automatic View Registration

    Automatic Registration can be used for either an Application or Module. Note that there is an optional Automatic property. When Automatic is set to true Prism will not look for any attributes but will simply look for any contained types that are a Page type. If there is a Page type it will automatically be registered.

    [AutoRegisterForNavigation]public class App : PrismApplication{ } [AutoRegisterForNavigation(Automatic = true)]public class AwesomeModule : Imodule{ }
    

    In the above example when the App is initializing Prism will reflect on the assembly of the App to look for any RegisterForNavigation Attributes first at an assembly level and then at a page level.

    [assembly: RegisterForNavigation(ViewType = typeof(ViewA))] [assembly: RegisterForNavigation(ViewType = typeof(ViewB), Name = "viewB")] [assembly: RegisterForNavigation(ViewType = typeof(ViewC), Name = "platformSpecific", RuntimePlatform = RuntimePlatform.Android)] [assembly: RegisterForNavigation(ViewType = typeof(ViewD), Name = "platformSpecific", RuntimePlatform = RuntimePlatform.iOS)]// OR// Registered as ViewA[RegisterForNavigation]public class ViewA : ContentPage { } [RegisterForNavigation(Name = "viewB")]public class ViewB : ContentPage { }// Ignored if no attribute exists unless Automatic Registration was enabledpublic class ViewB : ContentPage { }// Only Registered on iOS[RegisterForNavigation(RuntimePlatform = RuntimePlatform.iOS)]public class ViewD : ContentPage { }
    
  • v7.2.0.1038 Changes

    February 20, 2019

    General Notes

    ๐Ÿš€ This is the 2nd public preview for Prism 7.2, and the 1st public preview of the new Prism for UWP (aka Prism.Windows). Note that the UWP API's may still be in flux prior to release.

    ๐Ÿ›  This preview provides a number of bug fixes and enhancements.

    Prism Core

    • ๐Ÿšš #1348: Navigation Alignment - moved all navigation interfaces into Prism Core (currently hidden from WPF)
    • ๐Ÿšš #1476: Module Alignment - moved Exceptions, ModuleInfo, and several Modularity interfaces to Prism.Core from WPF combining with some Prism.Forms definitions.
    • IModuleManager.ModuleDownloadProgressChanged (available in net45 aka WPF ONLY)
    • #1505: Memory problem with EventAggregator and never published message
    • โšก๏ธ #1509: Module Alignment Updates: Introduce IModuleInfo
    • #1511: Module Alignment
    • ๐Ÿšš All modularity interfaces and base & supporting types moved to Prism.Core
    • IContainerRegistry now has a Fluent API. All registration methods now return IContainerRegistry to allow chaining registrations.
    • IContainerRegistry has expanded API's to help with additional scenarios where you might need a named type.
    • IContainerProvider has expanded API's to help resolve Types with specific instances that may be needed for resolution.
    • ๐Ÿ‘ (Forms and UWP) INavigationService now has extension methods to support the use of Tuples for NavigationParameters eliminating the need to specifically create new NavigationParameters when Navigating.

    Prism.WPF

    • ๐Ÿ‘ #1544: .Net Core 3 Support
    • #1601: InitializeModules() should be called even if there's no shell
    • #1676: Ambiguous match found when ObserveProperty
    • ๐Ÿ”Š #1666: A New IDialogService for WPF
    • ๐Ÿ”Š Introduces a new IDialogService that will replace the PopupWindowAction altogether. This service will allow developers to show any dialog they want either modal, or non-modal, and have complete control over their dialog logic.

    Prism.Forms

    • #1589: OnNavigatedFrom method is not called when changing detail on MasterDetailPage
    • #1615: Add the ability to switch tabs
    • #1625: Master Detail to Tab Page Navigation broken in 7.1
    • #1683: Xaml navigation without animation isn't working
    • ๐Ÿ— XAML Navigation Extensions are now Bindable. Among the benefits includes that when coupled with the new BindableLayout in Xamarin.Forms you could use this to build dynamic Menu's in XAML
    • XAML Navigation now allows you to specify whether the Navigation should be Animated or Use Modal Navigation
    • ๐Ÿ›  Fixed registration of Views by Platform
    • ๐Ÿ”„ Changed target Xamarin.Forms version from 4.0-pre1 to 3.5 SR1
  • v7.1.0 Changes

    October 15, 2018

    General Notes

    ๐Ÿ In addition to the typical bug fixes Prism 7.1 brings a much more consolidated approach to developing applications. Perhaps this is most clear with Prism.Modularity now being defined entirely in the Prism.Core providing a consistent API for Prism.Forms and Prism.WPF, as well as making it available for the first time to Prism.Windows (in an upcoming preview).

    Due to the major changes in where certain types are for Modularity (and Navigation for Prism.Forms), you may experience binary incompatibility issues when using libraries that target older versions of Prism.

    Container Notices

    โšก๏ธ Going forward we will only consider support for containers that work properly for Prism. The Prism team advises all developers to update projects to use the new PackageReference, this will help simplify maintaining which packages you need to update by simply targeting the Prism Container package (see Unity notice).

    Autofac

    ๐Ÿš€ After much discussion the Prism team has decided that this will be the final release for Autofac. Modularity is a core capability for Prism, which requires the use of a Mutable container. The fact that the Autofac team has chosen to make Autofac Immutable prevents us from being able to support the use of containers.

    MEF

    ๐Ÿ‘ Similarly the Prism team has decided that we will no longer be shipping or supporting MEF for WPF, nor will support be added for any other platforms.

    Unity

    โฌ†๏ธ Unity continues to be a very popular and fully supported container. For those upgrading to Prism 7.1 from Prism 6.X, note that you will need to uninstall the Unity references in your existing projects as the new maintainer for Unity has completely rearchitected the Unity Container. This included changing namespaces and changing how the library was shipped forcing the Prism Team to change the NuGet that we target from Unity to Unity.Container.

    Prism.Core

    • ๐Ÿšš #1348: Navigation Alignment - moved all navigation interfaces into Prism Core (currently hidden from WPF)
    • ๐Ÿšš #1476: Module Alignment - moved Exceptions, ModuleInfo, and several Modularity interfaces to Prism.Core from WPF combining with some Prism.Forms definitions.
      • IModuleManager.ModuleDownloadProgressChanged (available in net45 aka WPF ONLY)
    • #1505: Memory problem with EventAggregator and never published message
    • โšก๏ธ #1509: Module Alignment Updates: Introduce IModuleInfo
    • #1511: Module Alignment
      • All modularity interfaces and base & supporting types moved to Prism.Core

    Prism.Forms

    • #1348: Navigation alignment
      • Added INavigationParameters
      • Added INavigationParametersInternal
      • Added INavigationResult
      • Convert all methods using NavigationParameters to use the new INavigationParameters BREAKING
      • Changed Task INavigationService.NavigateAsync to Task<INavigationResult> INavigationService.NavigateAsync
      • Changed Task<bool> INavigationService.GoBackAsync to Task<INavigationResult> INavigationService.GoBackAsync BREAKING
    • #1347: ContainerProvider - Allows Declaring Types in XAML that require the Container to Resolve them
    • #1353: NavigationFrom not called when navigate to different Hamburger Menu Page
    • #1354: INavigationAware methods are not called on children of a CarouselPage
    • ๐Ÿšš #1403: Remove pages from NavigationStack without pushing another one
    • ๐Ÿ’ฅ #1414: Changed from Unity NuGet to Unity.Container BREAKING
    • #1425: XAML Navigation
    • #1439: DependencyResolver
    • #1456: Relative back navigation does not work with INavigationParameters
    • 0๏ธโƒฃ #1463: DryIoc Default Rules Change. By default DryIoc will attempt to resolve types based on an available constructor with resolvable types. Secondary registrations will now replace any initial registration by default.
    • #1464: Unity and Autofac no longer require INavigationService to be named navigationService inside of a ViewModel.
    • #1469: Make Xamarin.Forms DependencyResolver Opt-In
    • ๐Ÿ’ฅ #1476: Module Alignment BREAKING
      • ModuleInfo.ModuleType has changed from System.Type to System.String and is equal to Type.AssemblyQualifiedName
      • IModuleManager.LoadModuleCompleted - Forms will now invoke this event when a new module has been loaded. Note there is not currently a default handler provided by PrismApplication. This event will contain any caught exception that was thrown while attempting to load a Module.
      • Moved all Modularity interfaces except IModuleCatalog to Prism.Core
    • #1509: Module Alignment
      • Adds IModuleInfo
      • ModuleInfo moved back to Prism.Forms. ModuleInfo will now return Module Dependencies when decorated with the ModuleDependencyAttribute if dependencies are not set at Registration.
    • ๐Ÿšš #1511: Module Alignment - All modularity interfaces and base & supporting types moved to Prism.Core
    • ๐Ÿ‘ #1519: Support Partial Views in Xamarin Forms
    • #1546: MasterDetailPage navigation on iOS is unexcepted
    • #1549: EventToCommandBehavior.OnEventRaised NullReferenceException

    Partial Views

    ๐Ÿ‘ The concept of a Partial View is to support a custom layout which may be reused across multiple pages, and eliminate ViewModel logic duplication by allowing that custom layout to rely on its own ViewModel. To use a Partial View you must set the ViewModelLocator.AutowirePartialView property with a reference to the containing page as shown here. You should not set the ViewModelLocator.AutowireViewModel property on the Partial View unless you are explicitly opting out as setting this property to true directly may result in the ViewModel being incorrectly set.

    \<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"xmlns:local="clr-namespace:AwesomeApp.Views"xmlns:prism="clr-namespace:Prism.Ioc;assembly=Prism.Forms"xmlns:mvvm="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"x:Name="self"x:Class="AwesomeApp.Views.ViewA"\> \<StackLayout\> \<local:AwesomeView mvvm:ViewModelLocator.AutowirePartialView="{x:Reference self}" /\> \<Entry Text="{Binding SomeValue" /\> \</StackLayout\> \</ContentPage\>
    

    Dependency Resolver

    ๐Ÿ—„ Xamarin.Forms 3.1 introduces a new DependencyResolver. This enables applications using Dependency Injection to use their Container to resolve Platform Renderers and Effects which makes it possible to inject any services such as a logger. Since the default constructor was deprecated in Android Renderers as of Xamarin.Forms 2.5, Prism now includes a specific Android binary that enables the DependencyResolver to resolve types using

    ContainerProvider

    The Container Provider now allows types like ValueConverters to include Dependency Injection of Types/Services in the ctor, and allows the converter to be declared in XAML

    namespace Contoso.Converters{ public class MyValueConverter : IValueConverter { private ILoggerFacade \_logger { get; } public MyValueConverter(ILoggerFacade logger) { \_logger = logger; } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { \_logger.Log("Converting value", Category.Debug, Priority.None); return value; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { \_logger.Log("Converting Value Back...", Category.Debug, Priority.None); return value; } } }
    

    This can then be used in XAML using the ContainerProvider as follows:

    \<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"xmlns:ioc="clr-namespace:Prism.Ioc;assembly=Prism.Forms"xmlns:converters="using:Contoso.Converters"x:Class="Contoso.Views.ViewA"\> \<ContentPage.Resources\> \<ResourceDictionary\> \<ioc:ContainerProvider x:TypeArguments="converters:MyValueConverter" x:Key="myValueConverter" /\> \</ResourceDictionary\> \</ContentPage.Resources\> \<Entry Text="{Binding Demo,Converter={StaticResource myValueConverter}}" /\> \</ContentPage\>
    

    Navigation Improvements

    **Implemented relative back behavior ("../../") **

    Previously, when using the relative back feature ("../" ) you would be required to provide a page that would be pushed onto the navigation stack. That is no longer required. You may now chain together any number of relative go-back instructions to "go back".

    For example:
    Given your navigation stack looked like this: NavigationPage/UserList/UserDetails/LoginPage/EditUser

    ๐Ÿšš You can now indicate how many pages to remove, or "go back" by chaining the relative go-back instruction "../".

    NavigationService.NavigateAsync("../../../");

    This would result in going back three pages leaving you with the following navigation stack:

    NavigationPage/UserList

    NOTE - The pages in the stack prior to the current page (last page in the nav stack) will be removed without calling any INavAware methods. Only the current page (EditUser in this example) would perform a proper GoBackAsync and execute the INavAware methods.

    NOTE - This feature is only supported while within the context of a NavigationPage.

    XAML Navigation

    You can now use XAML Navigation Extensions to Navigate. This works well for scenarios where you may have a partial "MenuView" that may be reused across multiple Pages or where there may be no real reason to implement Navigation inside of a ViewModel.

    \<!-- basic nav --\>\<Button Text="Go To About" Command"{prism:NavigateTo 'About'}" /\>\<!-- basic nav without animation--\>\<Button Text="Go To About" Command"{prism:NavigateTo 'About', Animated=False}" /\>\<!-- basic modal nav --\>\<Button Text="Go To About" Command"{prism:NavigateTo 'About', UseModalNavigation=True}" /\>\<!-- custom can navigate support --\>\<Button Text="Go To About" Command="{prism:NavigateTo 'About'}" prism:Navigation.CanNavigate="{Binding CanNavigate}" /\>\<!-- go to new page, but remove one along the way --\>\<Button Text="Go To Settings" Command"{prism:NavigateTo '../Settings'}" /\>\<!-- nav with VM Parameters --\>\<Button Text="Go To About" Command"{prism:NavigateTo 'About'}"CommandParameters="{Binding MyNavParams}" /\>\<!-- Go Back --\>\<Button Text="Go Back" Command="{prism:GoBack}" /\>\<!-- Go Back To Root --\>\<Button Text="Go Back To Root" Command="{prism:GoBack ToRoot}" /\>\<!-- Xaml defined parameters --\>\<Button Text="Go To About" Command="{prism:NavigateTo 'About'}" \> \<Button.CommandParameter\> \<prism:XamlNavigationParameters Parent="{x:Reference this}"\> \<prism:XamlNavigationParameter Key="MainPageViewModel" Value="{Binding .}" /\> \</prism:XamlNavigationParameters\> \</Button.CommandParameter\> \</Button\>\<!-- can navigate on a parent object--\>\<ContentView\> \<ContentView prism:Navigation.CanNavigate="False"\> \<ContentView\> \<Button Text="Cannot Navigate" Command="{prism:GoBack}" /\> \</ContentView\> \</ContentView\> \</ContentView\>
    

    Prism.WPF

    • #30: Removing from, or opting out of registration, in the IRegionNavigationJournal
    • ๐Ÿšš #993: RemoveAll throws if KeepAlive is false
    • #1013: MEF DirectoryModuleCatalog - problem with diacritics since 6.3
    • #1120: Prism.Autofac RegisterTypeForNavigation issue
    • #1128: ViewModelLocator triggers in design mode
    • #1161: Ninject - Prism creating new view even if view exists in region
    • 0๏ธโƒฃ #1165: Change PopupWindowAction.CreateDefaultWindow to virtual
    • ๐Ÿ’ฅ #1175: Upgraded to Unity 5 Breaking
    • ๐Ÿ’ฅ #1211: Upgrade to CommonServiceLocator 2.0.1 Breaking
    • #1217: Add OnInitialized methdo to bootstrapper
    • #1242: AssemblyResolver - File path in FileNotFoundException
    • ๐Ÿ’ฅ #1261: ListDictionary TKey and TValue same type Breaking
    • #1264: Is it possible to provide a type safe way to read parameter
    • ๐Ÿ‘ #1321: Added support for regions targeting FrameworkContentElements
    • ๐Ÿ #1327: Include correct version of System.Windows.Interactivity
    • #1328: Regions attached to DependencyObject sometimes won't register
    • ๐Ÿ’ฅ #1414: BREAKING Changed from Unity NuGet to Unity.Container
    • 0๏ธโƒฃ #1463: DryIoc Default Rules Change. By default DryIoc will attempt to resolve types based on an available constructor with resolvable types. Secondary registrations will now replace any initial registration by default.
    • ๐Ÿ’ฅ #1476: Module Alignment BREAKING
      • Moved Exceptions to Prism.Core
      • Moved ModuleInfo to Prism.Core (see #1509)
      • Moved IModuleCatalogItem to Prism.Core
      • Moved IModuleInitializer to Prism.Core
      • Moved IModuleManager to Prism.Core
    • ๐Ÿ›  #1479: Fixes issue that prevented Prism.Autofac apps from starting
    • ๐Ÿ›  #1493: Fixes issue that prevented Prism.Ninject apps from starting
    • #1504: Memory problem with EventAggregator and never published message
    • #1509: Module Alignment
      • Introduced new IModuleInterface and moved concrete implementations back to the Platform level. This fixes a break that would affect any ModuleCatalogs defined in XAML caused by changing the resolving assembly in the XML Namespace.
    • #1511: Module Alignment
      • All modularity interfaces and base & supporting types moved to Prism.Core
    • #1543: Calling ToString() on NavigationParameters causes NullReferenceException when parameter is null.

    ๐Ÿ†• New PrismApplication Base Class

    The Bootstrapper has been marked obsolete and it is recommended to use the PrimsApplication class going forward. This results in less code to get started, and an easier and more intuitive API.

    ๐Ÿšš Note: The Bootstrapper class is not being removed, it is only marked obsolete to drive awareness of the new PrismApplication class.

    โž• Added new Prism.Ioc namespace to handle DI container abstractions. Interacting with the container is now done via the IContainerProvider and the IContainerRegistry interfaces. The IContainerProvider interface is used to resolve services from the container. The IContainerRegistry is used to register types with the container. Access to the actual DI container can be achieved by using the GetContainer() extension method off of the IContainerRegistry and IContainerProvider interfaces.