diff --git a/doc/Learn/Authentication/AuthenticationOverview.md b/doc/Learn/Authentication/AuthenticationOverview.md index b2bfa7fc48..256bc4d552 100644 --- a/doc/Learn/Authentication/AuthenticationOverview.md +++ b/doc/Learn/Authentication/AuthenticationOverview.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Authentication.Overview --- # Authentication +> **UnoFeatures:** `Authentication`, `AuthenticationMsal`, or `AuthenticationOidc` (add to `` in your `.csproj`) + Uno.Extensions.Authentication is designed to make it simple to add authentication to an application. Authenticating a user may be used to restrict access to specific parts of the application, or in order to supply an access token when calling a back-end service. There are two aspects to the Authentication extensions: diff --git a/doc/Learn/Authentication/HowTo-Authentication.md b/doc/Learn/Authentication/HowTo-Authentication.md index 35837105c5..ab4fc4ff2f 100644 --- a/doc/Learn/Authentication/HowTo-Authentication.md +++ b/doc/Learn/Authentication/HowTo-Authentication.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Authentication.HowToAuthentication --- # How-To: Get Started with Authentication +> **UnoFeatures:** `Authentication` (add to `` in your `.csproj`) + `Uno.Extensions.Authentication` provides you with a consistent way to add authentication to your application. It is recommended to use one of the built-in `IAuthenticationService` implementations. This tutorial will use the custom authorization to validate user credentials. ## Step-by-step diff --git a/doc/Learn/Authentication/HowTo-Cookies.md b/doc/Learn/Authentication/HowTo-Cookies.md index 138be522ae..99e6cfb742 100644 --- a/doc/Learn/Authentication/HowTo-Cookies.md +++ b/doc/Learn/Authentication/HowTo-Cookies.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Authentication.HowToCookieAuthorization --- # How-To: Using Cookies to Authorize +> **UnoFeatures:** `Authentication`, `AuthenticationMsal`, or `AuthenticationOidc` (add to `` in your `.csproj`) + Using **cookies** is a common way to store tokens that are needed to authenticate a user. When an HTTP request is successfully authenticated, the server will return a response that creates a cookie containing a token value. Uno Extensions makes these cookie-related authorization steps less tedious by doing the work of extracting these values and applying them to future requests. This tutorial will teach you how to configure authentication to apply tokens from a cookie when they are available. > [!IMPORTANT] diff --git a/doc/Learn/Authentication/HowTo-MsalAuthentication.md b/doc/Learn/Authentication/HowTo-MsalAuthentication.md index 33788207c7..34a495864b 100644 --- a/doc/Learn/Authentication/HowTo-MsalAuthentication.md +++ b/doc/Learn/Authentication/HowTo-MsalAuthentication.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Authentication.HowToMsalAuthentication --- # How-To: Get Started with MSAL Authentication +> **UnoFeatures:** `AuthenticationMsal` (add to `` in your `.csproj`) + `MsalAuthenticationProvider` allows your users to sign in using their Microsoft identities. It wraps the [MSAL library](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet) from Microsoft into an implementation of `IAuthenticationProvider`. This tutorial will use MSAL authorization to validate user credentials. ## Step-by-step diff --git a/doc/Learn/Authentication/HowTo-OidcAuthentication.md b/doc/Learn/Authentication/HowTo-OidcAuthentication.md index 7796e73660..d6c156168e 100644 --- a/doc/Learn/Authentication/HowTo-OidcAuthentication.md +++ b/doc/Learn/Authentication/HowTo-OidcAuthentication.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Authentication.HowToOidcAuthentication --- # How-To: Get Started with Oidc Authentication +> **UnoFeatures:** `AuthenticationOidc` (add to `` in your `.csproj`) + `OidcAuthenticationProvider` is a specific implementation of `IAuthenticationProvider` that allows your users to sign in using their identities from a participating identity provider. It provides seamless integration with any [OpenID Connect](https://openid.net/connect/) backend, such as [Duende.IdentityServer](https://duendesoftware.com/products/identityserver). By acting as an adapter, it integrates OpenID Connect authentication into the Uno.Extensions ecosystem, allowing you to leverage a unified approach across platforms. Under the hood, `OidcAuthenticationProvider` relies on [Duende.IdentityModel.OidcClient](https://docs.duendesoftware.com/identitymodel-oidcclient/), for all non-windows targets, as a widely-used .NET library that handles the core OpenID Connect and OAuth 2.0 protocols. This library manages the complex operations like token handling and user authentication. diff --git a/doc/Learn/Authentication/HowTo-WebAuthentication.md b/doc/Learn/Authentication/HowTo-WebAuthentication.md index 5829d86910..949602f0cc 100644 --- a/doc/Learn/Authentication/HowTo-WebAuthentication.md +++ b/doc/Learn/Authentication/HowTo-WebAuthentication.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Authentication.HowToWebAuthentication --- # How-To: Get Started with Web Authentication +> **UnoFeatures:** `Authentication` (add to `` in your `.csproj`) + `WebAuthenticationProvider` provides an implementation that displays a web view in order for the user to login. After login, the web view redirects back to the application, along with any tokens. This tutorial will use web authorization to validate user credentials. ## Step-by-step diff --git a/doc/Learn/Configuration/ConfigurationOverview.md b/doc/Learn/Configuration/ConfigurationOverview.md index 096022287b..9c56f48214 100644 --- a/doc/Learn/Configuration/ConfigurationOverview.md +++ b/doc/Learn/Configuration/ConfigurationOverview.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Configuration.Overview --- # Configuration +> **UnoFeatures:** `Configuration` (add to `` in your `.csproj`) + `Uno.Extensions.Configuration` provides a uniform way to read or write configuration data from a number of distinct sources. The implementation of `IOptions` from [Microsoft.Extensions.Options](https://learn.microsoft.com/dotnet/api/microsoft.extensions.options) allows for [read-only](https://learn.microsoft.com/dotnet/core/extensions/configuration#concepts-and-abstractions) access to values organized into **configuration sections**. The [writable configuration](xref:Uno.Extensions.Configuration.HowToWritableConfiguration) pattern supports the ability to update configuration values at runtime. This feature uses [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration) for any configuration related work. For more documentation on configuration, read the references listed at the bottom. diff --git a/doc/Learn/Configuration/HowTo-Configuration.md b/doc/Learn/Configuration/HowTo-Configuration.md index bd2665cdfe..18e98e6c1a 100644 --- a/doc/Learn/Configuration/HowTo-Configuration.md +++ b/doc/Learn/Configuration/HowTo-Configuration.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Configuration.HowToConfiguration --- # How-To: Get Started with Configuration +> **UnoFeatures:** `Configuration` (add to `` in your `.csproj`) + `Uno.Extensions.Configuration` provides you with a consistent way to view configuration data from a number of distinct sources. It leverages the `IOptions` interface from [Microsoft.Extensions.Options](https://learn.microsoft.com/dotnet/api/microsoft.extensions.options) to offer [read-only](https://learn.microsoft.com/dotnet/core/extensions/configuration#concepts-and-abstractions) access to values organized into sections. Unlike the [Writable Configuration](xref:Uno.Extensions.Configuration.HowToWritableConfiguration) (aka Settings) pattern, this does not allow for programmatic writing by itself. ## Step-by-step diff --git a/doc/Learn/Configuration/HowTo-WritableConfiguration.md b/doc/Learn/Configuration/HowTo-WritableConfiguration.md index 26c10f43a8..82069a3335 100644 --- a/doc/Learn/Configuration/HowTo-WritableConfiguration.md +++ b/doc/Learn/Configuration/HowTo-WritableConfiguration.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Configuration.HowToWritableConfiguration # How-To: Writable Configuration +> **UnoFeatures:** `Configuration` (add to `` in your `.csproj`) + **Writable Configuration** extends the standard, [read-only](xref:Uno.Extensions.Configuration.HowToConfiguration) pattern by allowing for programmatic writing of configuration values at runtime. This is useful for scenarios where you want to persist user preferences or other trivial information that may be changed over time. `Uno.Extensions.Configuration` extends the `IOptionsSnapshot` interface from [Microsoft.Extensions.Options](https://learn.microsoft.com/dotnet/api/microsoft.extensions.options) to support this. A special interface called `IWritableOptions` is registered as a service when you use the `UseConfiguration()` extension method. In this tutorial, we will walk through how to use the `UpdateAsync()` method on this interface to modify values of a specific configuration section. For a refresher on configuration sections, see [Sections](xref:Uno.Extensions.Configuration.Overview#sections). diff --git a/doc/Learn/DependencyInjection/DependencyInjectionOverview.md b/doc/Learn/DependencyInjection/DependencyInjectionOverview.md index 7a49fd08ae..40b7eb995c 100644 --- a/doc/Learn/DependencyInjection/DependencyInjectionOverview.md +++ b/doc/Learn/DependencyInjection/DependencyInjectionOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.DependencyInjection.Overview # Dependency Injection +> **UnoFeatures:** `Hosting` (add to `` in your `.csproj`) + Apps built using hosting can leverage dependency injection (DI) to register services and make them available to app dependencies. This pattern enables apps to follow sound design principles, such as [SOLID](https://en.wikipedia.org/wiki/SOLID) and [Inversion of Control](https://en.wikipedia.org/wiki/Inversion_of_control). While the host builder implements standard functionality from the [Microsoft.Extensions.DependencyInjection](https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection) library, it also provides additional features to improve the developer experience. ## Registering Services diff --git a/doc/Learn/DependencyInjection/HowTo-CommunityToolkit.md b/doc/Learn/DependencyInjection/HowTo-CommunityToolkit.md index 22abe0cac4..442c5d76d8 100644 --- a/doc/Learn/DependencyInjection/HowTo-CommunityToolkit.md +++ b/doc/Learn/DependencyInjection/HowTo-CommunityToolkit.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.DependencyInjection.HowToCommunityToolkit # How-To: Manually Resolving Dependencies with CommunityToolkit.Mvvm +> **UnoFeatures:** `Mvvm` (add to `` in your `.csproj`) + While making gradual changes to an existing app's codebase, you may find it necessary to access the DI container to manually resolve dependencies. For instance, if you are overhauling a view model to separate its logic into services, you may need to resolve the service without using constructor injection. The [CommunityToolkit.Mvvm](https://www.nuget.org/packages/CommunityToolkit.Mvvm) package provides a static `Ioc.Default` property that exposes the DI container used by the application. This tutorial will walk you through how to set up this feature and use it to manually resolve dependencies. diff --git a/doc/Learn/DependencyInjection/HowTo-DependencyInjectionSetup.md b/doc/Learn/DependencyInjection/HowTo-DependencyInjectionSetup.md index dedcdb3171..256e365774 100644 --- a/doc/Learn/DependencyInjection/HowTo-DependencyInjectionSetup.md +++ b/doc/Learn/DependencyInjection/HowTo-DependencyInjectionSetup.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.DependencyInjection.HowToDependencyInjection --- # How-To: Use Services with Dependency Injection +> **UnoFeatures:** `Hosting` (add to `` in your `.csproj`) + Dependency Injection (DI) is an important design pattern when building loosely-coupled software that allows for maintainability and testing. This tutorial will walk you through how to register services so that they can be consumed throughout your application. ## Step-by-step diff --git a/doc/Learn/Hosting/HostingOverview.md b/doc/Learn/Hosting/HostingOverview.md index 2678620444..956f584a0b 100644 --- a/doc/Learn/Hosting/HostingOverview.md +++ b/doc/Learn/Hosting/HostingOverview.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Hosting.Overview --- # Hosting +> **UnoFeatures:** `Hosting` (add to `` in your `.csproj`) + `Hosting` provides an implementation of the abstraction for building applications which support initialization of dependencies, establishing different environment types, and the full breadth of extensible features offered by Uno.Extensions. Hosting is provided as an Uno Feature. To enable `Hosting` support in your application, add `Hosting` to the `` property in the Class Library (.csproj) file. For more information about `UnoFeatures` refer to our [Using the Uno.Sdk](xref:Uno.Features.Uno.Sdk) docs. diff --git a/doc/Learn/Hosting/HowTo-HostingSetup.md b/doc/Learn/Hosting/HowTo-HostingSetup.md index 16bdf34523..e1e78a91ee 100644 --- a/doc/Learn/Hosting/HowTo-HostingSetup.md +++ b/doc/Learn/Hosting/HowTo-HostingSetup.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Hosting.HowToHostingSetup --- # How-To: Get Started with Hosting +> **UnoFeatures:** `Hosting` (add to `` in your `.csproj`) + `Hosting` can be used to register services that will be accessible throughout the application via dependency injection (DI). This tutorial will walk you through the critical steps needed to leverage hosting in your application. [!include[create-application](../includes/create-application.md)] diff --git a/doc/Learn/Http/HowTo-EndpointOptions.md b/doc/Learn/Http/HowTo-EndpointOptions.md index bca6692c80..4b8bd00047 100644 --- a/doc/Learn/Http/HowTo-EndpointOptions.md +++ b/doc/Learn/Http/HowTo-EndpointOptions.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Http.HowToEndpointOptions # How-To: Configure `HttpClient` with Custom Endpoint Options +> **UnoFeatures:** `Http` (add to `` in your `.csproj`) + It's often necessary to include an API key alongside requests to a web API. This can be done by adding a header to the request. The steps below will show you how to easily specify custom options, such as an access token, when adding an endpoint. You can then configure the associated `HttpClient` from these options. ## Pre-requisites diff --git a/doc/Learn/Http/HowTo-Http.md b/doc/Learn/Http/HowTo-Http.md index 36e523ca6d..885067f93f 100644 --- a/doc/Learn/Http/HowTo-Http.md +++ b/doc/Learn/Http/HowTo-Http.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Http.HowToHttp --- # How-To: Register an Endpoint for HTTP Requests +> **UnoFeatures:** `Http` (add to `` in your `.csproj`) + When working with a complex application, centralized registration of your API endpoints is a good practice. This allows you to easily change the endpoint for a given service, and to easily add new services. ## Step-by-step diff --git a/doc/Learn/Http/HowTo-Kiota.md b/doc/Learn/Http/HowTo-Kiota.md index 59f4964e77..a1a800b5ac 100644 --- a/doc/Learn/Http/HowTo-Kiota.md +++ b/doc/Learn/Http/HowTo-Kiota.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Http.HowToKiota --- # How-To: Quickly create and register a Kiota Client for an API +> **UnoFeatures:** `HttpKiota` (add to `` in your `.csproj`) + When working with APIs in your application, having a strongly-typed client can simplify communication and reduce boilerplate code. **Kiota** is a tool that generates strongly-typed API clients from Swagger/OpenAPI definitions. With Uno.Extensions, you can easily register and use Kiota clients in your Uno Platform app without additional setup. ## Step-by-Step Guide diff --git a/doc/Learn/Http/HowTo-Refit.md b/doc/Learn/Http/HowTo-Refit.md index e5a66a4e44..db7db1748d 100644 --- a/doc/Learn/Http/HowTo-Refit.md +++ b/doc/Learn/Http/HowTo-Refit.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Http.HowToRefit --- # How-To: Quickly Create a Strongly-Typed REST Client for an API +> **UnoFeatures:** `HttpRefit` (add to `` in your `.csproj`) + When accessing resources with a [REST-style](https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm) API is a significant part of your application, it is common to look for an SDK that provides a strongly-typed client for the API. This allows you to avoid writing boilerplate code to make requests and deserialize responses. There is sometimes no SDK available yet for the API you want to use, or it's not compatible with your target platform. With the design goal of avoiding boilerplate code in mind, we will walk through how to use [Refit](https://github.com/reactiveui/refit) to quickly create a strongly-typed client for a REST API and register it with the service collection as an endpoint. ## Step-by-step @@ -41,7 +43,7 @@ When accessing resources with a [REST-style](https://www.ics.uci.edu/~fielding/p } ``` -* This feature requires the [Uno.Extensions.Http.WinUI](https://www.nuget.org/packages/Uno.Extensions.Http.WinUI) package. It uses [Microsoft Extensions](https://www.nuget.org/packages/Microsoft.Extensions.Http) for any HTTP-related [work](https://learn.microsoft.com/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests#benefits-of-using-ihttpclientfactory) such as naming or configuring the `HttpClient` instance associated with your endpoints. +* The HttpRefit UnoFeature automatically includes the `Uno.Extensions.Http.WinUI` package, which uses [Microsoft Extensions](https://www.nuget.org/packages/Microsoft.Extensions.Http) for any HTTP-related [work](https://learn.microsoft.com/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests#benefits-of-using-ihttpclientfactory) such as naming or configuring the `HttpClient` instance associated with your endpoints. ### 3. Define the live interface diff --git a/doc/Learn/Http/HttpOverview.md b/doc/Learn/Http/HttpOverview.md index 841a42dfed..36247a0797 100644 --- a/doc/Learn/Http/HttpOverview.md +++ b/doc/Learn/Http/HttpOverview.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Http.Overview --- # HTTP +> **UnoFeatures:** `Http`, `HttpRefit`, or `HttpKiota` (add to `` in your `.csproj`) + Uno.Extensions.Http allows for the registration of API **endpoints** as multiple typed `HttpClient` instances. In this centralized location for accessing web resources, the lifecycle of the corresponding `HttpMessageHandler` objects is managed. Added clients can optionally be configured to use the platform-native handler. Additional functionality is provided to clear cookies or log diagnostic messages in responses. This library uses [Microsoft.Extensions.Http](https://www.nuget.org/packages/Microsoft.Extensions.Http) for any HTTP related work. For additional documentation on HTTP requests, read the references listed at the bottom. diff --git a/doc/Learn/Localization/HowTo-Localization.md b/doc/Learn/Localization/HowTo-Localization.md index 1f02c7ad4e..8a8aeb90de 100644 --- a/doc/Learn/Localization/HowTo-Localization.md +++ b/doc/Learn/Localization/HowTo-Localization.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Localization.HowToUseLocalization --- # How-To: Configure and Use Localization +> **UnoFeatures:** `Localization` (add to `` in your `.csproj`) + `Uno.Extensions.Localization` uses the locale-specific resources from `resw` files placed in folders corresponding to the well-known language tag (eg en-US). By opting into localization, an implementation of `IStringLocalizer` is registered with your application's `IServiceCollection`. ## Step-by-step diff --git a/doc/Learn/Localization/LocalizationOverview.md b/doc/Learn/Localization/LocalizationOverview.md index 7abfd79878..3297137f5d 100644 --- a/doc/Learn/Localization/LocalizationOverview.md +++ b/doc/Learn/Localization/LocalizationOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Localization.Overview # Localization +> **UnoFeatures:** `Localization` (add to `` in your `.csproj`) + It is often necessary to adapt an application to a specific subset of users within a market. **Localization** includes the type of actions developers take to modify both user interface elements and content to adhere to more languages or cultures. Specifically, text **translation** is done by applying alternate strings of text at runtime which accommodate a user's language preference. Many apps store these pieces of text in dedicated resource files that the app parses and assigns as text throughout the application. `Uno.Extensions.Localization` provides a consistent way to resolve the text of a specific culture or locale across platforms. This feature allows for modifying them to be applied upon app restart. diff --git a/doc/Learn/Logging/HowTo-InternalLogging.md b/doc/Learn/Logging/HowTo-InternalLogging.md index 634c11d85e..cea455cfdb 100644 --- a/doc/Learn/Logging/HowTo-InternalLogging.md +++ b/doc/Learn/Logging/HowTo-InternalLogging.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Logging.UseInternalLogging --- # How-To: Enable Internal Logging Based on Your Hosting Environment +> **UnoFeatures:** `Logging` (add to `` in your `.csproj`) + `Uno.Extensions.Logging` provides logging capabilities tailored to your target platform. It allows the recording of events for XAML layout, Uno-internal messages, and custom events with severity and verbosity levels of your choice. ## Step-by-step diff --git a/doc/Learn/Logging/HowTo-Logging.md b/doc/Learn/Logging/HowTo-Logging.md index c912cdfb93..da27b97a39 100644 --- a/doc/Learn/Logging/HowTo-Logging.md +++ b/doc/Learn/Logging/HowTo-Logging.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Logging.UseLogging --- # How-To: Enable and Use Logging +> **UnoFeatures:** `Logging` (add to `` in your `.csproj`) + `Uno.Extensions.Logging` allows you to leverage logging capabilities tailored to your target platform to easily record events for XAML layout, Uno-internal messages, and custom events with severity and verbosity levels of your choice. ## Step-by-step diff --git a/doc/Learn/Logging/LoggingOverview.md b/doc/Learn/Logging/LoggingOverview.md index 625b844256..0c395599b2 100644 --- a/doc/Learn/Logging/LoggingOverview.md +++ b/doc/Learn/Logging/LoggingOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Logging.Overview # Logging +> **UnoFeatures:** `Logging` or `Serilog` (add to `` in your `.csproj`) + Apps that record events typically do so for informational or diagnostic purposes, depending on the desired level of verbosity. **Logging** is the process of recording events to either a _persistent_ store such as a text file or database, or a _transient_ location like the standard output console. The `Uno.Extensions.Logging` library leverages logging capabilities tailored to the target platform to easily write entries for both app-specific and Uno internal events to one or more locations. These locations where logs can be written are referred to as **providers**. This feature enables a simple way to wire up custom log providers for locations not included by the runtime libraries or extensions. It uses [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging) for logging abstractions. For more documentation about logging, read the references listed at the bottom. diff --git a/doc/Learn/Markup/HowTo-CustomMarkupProject-Theme.md b/doc/Learn/Markup/HowTo-CustomMarkupProject-Theme.md index afce44ea34..77d60d6f71 100644 --- a/doc/Learn/Markup/HowTo-CustomMarkupProject-Theme.md +++ b/doc/Learn/Markup/HowTo-CustomMarkupProject-Theme.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Markup.HowToCustomMarkupProjectTheme # C# Markup project setup +> **UnoFeatures:** `Material` (add to `` in your `.csproj`) + In this tutorial, you'll learn how to set up an Uno Platform project to use C# Markup to change the Theme. 1. For this tutorial we will continue to use the Sample created on the [Custom your own C# Markup - Learn how to use Toolkit](xref:Uno.Extensions.HowToCustomMarkupProjectToolkit) tutorial and change on the [Custom your own C# Markup - Learn how to change Visual States and User Controls](xref:Uno.Extensions.HowToCustomMarkupProjectVisualStates). @@ -43,13 +45,17 @@ Below we can see how to include and how to customize each of the two. ### Material -Assuming that we are on the Fluent Theme and we want to change to the Material Theme, we just need to change some files (Or add some Nuget References) and it is done. +> **UnoFeatures:** `Material` (add to `` in your `.csproj`) -#### Below is the list of files we need to modify +The recommended way to add Material theme to your project is by adding the `Material` UnoFeature to your .csproj file. This will automatically include all necessary packages. -- In the File Directory.Packages.props: +Assuming that we are on the Fluent Theme and we want to change to the Material Theme, we just need to add the `Material` UnoFeature. + +#### What the Material UnoFeature includes -In the `Directory.Packages.props`, we need to add the `PackageReference` below or use the Manage NuGet Packages Manager and update the versions for the project. +When you add the `Material` UnoFeature, the following packages are automatically added: + +- In the File Directory.Packages.props: ```xml @@ -59,7 +65,7 @@ In the `Directory.Packages.props`, we need to add the `PackageReference` below o -------------------------------------------------------------- -If you prefer you can use the Manage NuGet Packages: +(Alternative: If you're not using UnoFeatures, you can manually manage NuGet Packages: In the Solution Explorer panel, right-click on your app's App Code Library project (PROJECT_NAME.csproj) and select Manage NuGet Packages... @@ -71,9 +77,7 @@ and select Manage NuGet Packages... -------------------------------------------------------------- -- In the File of Projects References: - -Add PackageReference to the PROJECT_NAME.csproj and the PROJECT_NAME.[Platform].csproj projects. +- Package references in PROJECT_NAME.csproj and PROJECT_NAME.[Platform].csproj projects: ```xml diff --git a/doc/Learn/Markup/HowTo-MarkupProjectToolkit.md b/doc/Learn/Markup/HowTo-MarkupProjectToolkit.md index cf0f3adc87..137cd4e35a 100644 --- a/doc/Learn/Markup/HowTo-MarkupProjectToolkit.md +++ b/doc/Learn/Markup/HowTo-MarkupProjectToolkit.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Markup.HowToMarkupProjectToolkit # How to set up an C# Markup project for Toolkit +> **UnoFeatures:** `CSharpMarkup` (add to `` in your `.csproj`) + In this tutorial, you'll learn how to set up an Uno Platform project to use C# Markup. 1. Make sure your environment is set up properly by using [uno check](xref:UnoCheck.UsingUnoCheck). @@ -54,17 +56,21 @@ In this tutorial, you'll learn how to set up an Uno Platform project to use C# M ## Toolkit References +> **Note:** The recommended way to add Toolkit to your project is using the `Toolkit` UnoFeature in your .csproj file. + Looking in detail at the projects with the addition of the Toolkit, we can see the addition of some additional references. -This allows an easy inclusion of the Toolkit in existing projects. +This shows what happens when you enable the `Toolkit` UnoFeature, which automatically adds the necessary package references. + +When using the `Toolkit` UnoFeature, the following packages are automatically included: -1. Add the references to the Directory.Packages.props file (with the updated version). +1. Package versions in Directory.Packages.props: ```xml ``` -1. Add the package to the following projects: +2. Package references added to the following projects: - PROJECT_NAME.Wasm.csproj - PROJECT_NAME.Mobile.csproj (or PROJECT_NAME.iOS.csproj, PROJECT_NAME.Droid.csproj, PROJECT_NAME.macOS.csproj if you have an existing project) @@ -75,7 +81,7 @@ This allows an easy inclusion of the Toolkit in existing projects. ``` -Choose either: +The UnoFeature automatically chooses: - The *Uno.Toolkit.UI* package when targeting Xamarin/UWP - The *Uno.Toolkit.WinUI* package when targeting net6.0+/WinUI diff --git a/doc/Learn/Mvux/Advanced/Commands.md b/doc/Learn/Mvux/Advanced/Commands.md index e2e85cbe31..6b05553d9f 100644 --- a/doc/Learn/Mvux/Advanced/Commands.md +++ b/doc/Learn/Mvux/Advanced/Commands.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.Advanced.Commands # Commands +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + This page covers the following topics: - [Commands](#commands) diff --git a/doc/Learn/Mvux/Advanced/InspectGeneratedCode.md b/doc/Learn/Mvux/Advanced/InspectGeneratedCode.md index cca9d680c1..ee87b47f44 100644 --- a/doc/Learn/Mvux/Advanced/InspectGeneratedCode.md +++ b/doc/Learn/Mvux/Advanced/InspectGeneratedCode.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.Advanced.InspectGeneratedCode # Inspecting the generated code +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + MVUX makes extensive use of code generation. It's used to generate ViewModels for models, entities, and commands. Inspecting the generated code can give you a lot of insight into how the ViewModels work under the hood as well as how MVUX operates behind the scenes. diff --git a/doc/Learn/Mvux/Advanced/Messaging.md b/doc/Learn/Mvux/Advanced/Messaging.md index 7f44c0a2a0..6105d8cb94 100644 --- a/doc/Learn/Mvux/Advanced/Messaging.md +++ b/doc/Learn/Mvux/Advanced/Messaging.md @@ -87,11 +87,13 @@ public partial record AnotherModelOrService ## MVUX integration with the messenger +> **UnoFeatures:** `MVUX;Mvvm` (add to `` in your `.csproj`) + MVUX harnesses the power of the Community Toolkit messenger and adds extension methods that enable you to listen to entity changes received from the messenger and have them automatically applied to the state or list-state storing the entities in the current model. The following entity-change types are supported: created, updated, and deleted. For instance, when a command in the model creates a new entity and stores it in the database using a service, the service can send a 'created' entity-change message to the messenger, which can then be intercepted in the model to have the `State` or `ListState` update itself and display the newly created entity received from the messenger. -These extensions are part of the [`Uno.Extensions.Reactive.Messaging`](https://www.nuget.org/packages/Uno.Extensions.Reactive.Messaging) NuGet package. +These messaging extensions are included with the MVUX UnoFeature as part of the `Uno.Extensions.Reactive.Messaging` package. ### Observe diff --git a/doc/Learn/Mvux/Advanced/Pagination.md b/doc/Learn/Mvux/Advanced/Pagination.md index 0c1f57dc34..ef883853da 100644 --- a/doc/Learn/Mvux/Advanced/Pagination.md +++ b/doc/Learn/Mvux/Advanced/Pagination.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.Advanced.Pagination # Pagination +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + There are several ways to paginate data. > [!NOTE] diff --git a/doc/Learn/Mvux/Advanced/Selection.md b/doc/Learn/Mvux/Advanced/Selection.md index 4e347b4fe8..76f2f196cb 100644 --- a/doc/Learn/Mvux/Advanced/Selection.md +++ b/doc/Learn/Mvux/Advanced/Selection.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.Advanced.Selection # Selection +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + MVUX has built-in support for both [single item](#single-item-selection) and [multi-item selection](#multi-item-selection). Any control that inherits [`Selector`](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.selector) (e.g. [`ListView`](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview), [`GridView`](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.gridview), [`ComboBox`](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.combobox), [`FlipView`](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.flipview)), has automatic support for updating a List-State with its current selection. Binding to the `SelectedItem` property is not even required, as this works automatically. diff --git a/doc/Learn/Mvux/FeedView.md b/doc/Learn/Mvux/FeedView.md index 72c7763a21..a44e63cd68 100644 --- a/doc/Learn/Mvux/FeedView.md +++ b/doc/Learn/Mvux/FeedView.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.FeedView # The `FeedView` control +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + The `FeedView` control is one of the main ways to consume Feeds and States within an application. It uses different visual states to control what is displayed on the screen depending on the state of the underlying `IFeed`, or `IState`. ## How to use the `FeedView` control diff --git a/doc/Learn/Mvux/ListStates.md b/doc/Learn/Mvux/ListStates.md index b06ae86e81..1687a2606a 100644 --- a/doc/Learn/Mvux/ListStates.md +++ b/doc/Learn/Mvux/ListStates.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.ListStates # What are list-states +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + List-state is the collection counterpart of [state](xref:Uno.Extensions.Mvux.States). List-state adds extra operators which make it easier to apply updates on multiple items instead of just a single item. diff --git a/doc/Learn/Mvux/Overview.md b/doc/Learn/Mvux/Overview.md index 9d8d1d8dd6..a30a48b756 100644 --- a/doc/Learn/Mvux/Overview.md +++ b/doc/Learn/Mvux/Overview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.Overview # MVUX Overview +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + **M**odel, **V**iew, **U**pdate, e**X**tended (**MVUX**) is an implementation of the Model-View-Update design pattern, that encourages the flow of immutable data in a single direction. What differentiates MVUX from other MVU implementations is that it has been designed to support data binding. ## Why MVUX? diff --git a/doc/Learn/Mvux/Tutorials/HowTo-ListFeed.md b/doc/Learn/Mvux/Tutorials/HowTo-ListFeed.md index 89f7dbc507..415bcb7320 100644 --- a/doc/Learn/Mvux/Tutorials/HowTo-ListFeed.md +++ b/doc/Learn/Mvux/Tutorials/HowTo-ListFeed.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.HowToListFeed # How to create a list feed +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + In this tutorial, you will learn how to create an MVUX project that asynchronously requests and displays a collection of items from a service, and enables refreshing the data. diff --git a/doc/Learn/Mvux/Tutorials/HowTo-MvuxProject.md b/doc/Learn/Mvux/Tutorials/HowTo-MvuxProject.md index 5f74fef6b8..c65f6b2556 100644 --- a/doc/Learn/Mvux/Tutorials/HowTo-MvuxProject.md +++ b/doc/Learn/Mvux/Tutorials/HowTo-MvuxProject.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.HowToMvuxProject # How to set up an MVUX project +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + In this tutorial, you'll learn how to set up an Uno Platform project to use MVUX. > [!NOTE] diff --git a/doc/Learn/Mvux/Tutorials/HowTo-PushListFeed.md b/doc/Learn/Mvux/Tutorials/HowTo-PushListFeed.md index cfd82c41e7..a793bac04a 100644 --- a/doc/Learn/Mvux/Tutorials/HowTo-PushListFeed.md +++ b/doc/Learn/Mvux/Tutorials/HowTo-PushListFeed.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.HowToPushListFeed # How to create a list feed where values are pushed in +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + In this tutorial, you will learn how to create an MVUX project that displays stock data that is pushed in from a service using an [Async Enumerable](https://learn.microsoft.com/archive/msdn-magazine/2019/november/csharp-iterating-with-async-enumerables-in-csharp-8#a-tour-through-async-enumerables) method. In this tutorial, you will also learn how to create an MVUX project and utilization of feed (`IFeed`) and the `FeedView` control to display data pushed in asynchronously from an `IAsyncEnumerable`. diff --git a/doc/Learn/Mvux/Tutorials/HowTo-SimpleFeed.md b/doc/Learn/Mvux/Tutorials/HowTo-SimpleFeed.md index d26bd2a06b..0fdd6106ce 100644 --- a/doc/Learn/Mvux/Tutorials/HowTo-SimpleFeed.md +++ b/doc/Learn/Mvux/Tutorials/HowTo-SimpleFeed.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.HowToSimpleFeed # How to create a feed +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + In this tutorial, you will learn how to create a project that uses MVUX with a combination of a feed (`IFeed`) and the `FeedView` control to asynchronously load and display data coming from a service. - The data will come from a service that asynchronously provides a single value of current weather information upon request. diff --git a/doc/Learn/Mvux/Tutorials/HowTo-SimpleState.md b/doc/Learn/Mvux/Tutorials/HowTo-SimpleState.md index 40acf6980e..9a5752c937 100644 --- a/doc/Learn/Mvux/Tutorials/HowTo-SimpleState.md +++ b/doc/Learn/Mvux/Tutorials/HowTo-SimpleState.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.HowToSimpleState # How to create a state with a command +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + In this tutorial, you will learn how to create an MVUX project and basic usage of a state (`IState`) and the `FeedView` control, to asynchronously load, display and manipulate data from and to an service. - The data is provided by a service that asynchronously retrieves and updates a single value that determines the crowdedness of a wedding hall, via a 'remote' service. diff --git a/doc/Learn/Mvux/Walkthrough/Commands.howto.md b/doc/Learn/Mvux/Walkthrough/Commands.howto.md index 066a0def3b..5ba16cd748 100644 --- a/doc/Learn/Mvux/Walkthrough/Commands.howto.md +++ b/doc/Learn/Mvux/Walkthrough/Commands.howto.md @@ -50,8 +50,6 @@ Requires the `MVUX` UnoFeature. --- -## 2. `02-run-async-model-method-and-auto-disable-button.md` - ### Run an async model method and auto-disable the button **Outcome:** Button disables while your async method runs. diff --git a/doc/Learn/Mvux/WorkingWithRecords.md b/doc/Learn/Mvux/WorkingWithRecords.md index b1ef9631aa..b5b4fc68ba 100644 --- a/doc/Learn/Mvux/WorkingWithRecords.md +++ b/doc/Learn/Mvux/WorkingWithRecords.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Mvux.Records # How to write Records with MVUX +> **UnoFeatures:** `MVUX` (add to `` in your `.csproj`) + ## What is a Record A [record](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record) behaves like a class*, offering the feature of **immutability**, where the values assigned to it remain unchanged once set. It's possible to create records using the `record` modifier, for example: diff --git a/doc/Learn/Navigation/Advanced/HowTo-AdvancedPageNavigation.md b/doc/Learn/Navigation/Advanced/HowTo-AdvancedPageNavigation.md index e440ff0434..13371c652f 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-AdvancedPageNavigation.md +++ b/doc/Learn/Navigation/Advanced/HowTo-AdvancedPageNavigation.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.PageNavigation --- # How-To: Employ Advanced Page Navigation Techniques +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + When using navigation, you may not want to allow the current page to remain in the back-stack. If you want to navigate to the main page of the application after signing in, there should not be a login page still in the back-stack for a user to accidentally to go back to. Using backward/forward navigation in your app requires a degree of extra consideration. Users always expect the back/forward button to take them to a page that is still relevant, yet logically related to the current page and direction. This page contains several concise tutorials about how to implement navigation techniques that address these more advanced problems. diff --git a/doc/Learn/Navigation/Advanced/HowTo-IRouteNotifier.md b/doc/Learn/Navigation/Advanced/HowTo-IRouteNotifier.md index d094848764..d0148af913 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-IRouteNotifier.md +++ b/doc/Learn/Navigation/Advanced/HowTo-IRouteNotifier.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.IRouteNotifier --- # How-To: Use `IRouteNotifier` to Handle Route Changes +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + The `IRouteNotifier` interface allows you to track and respond to route changes through the `RouteChanged` event. This guide will show you how to use `IRouteNotifier` to handle route changes and improve your app's navigation. ## Step-by-steps diff --git a/doc/Learn/Navigation/Advanced/HowTo-ResponsiveShell.md b/doc/Learn/Navigation/Advanced/HowTo-ResponsiveShell.md index 1279658335..d0a13edd49 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-ResponsiveShell.md +++ b/doc/Learn/Navigation/Advanced/HowTo-ResponsiveShell.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.ResponsiveShell --- # How-To: Build a Responsive Layout using NavigationView and TabBar +> **UnoFeatures:** `Navigation;Toolkit` (add to `` in your `.csproj`) + Apps that scale across multiple devices and form factors need to be able to adapt their layout to the available screen real estate. When your app is running on narrow devices, such as phones, you may want to hide the navigation pane and show a hamburger menu button instead. It makes sense to allow `TabBar` to be the dominant navigation surface on these devices. On larger devices, such as tablets and desktops, you may want to show the navigation pane and hide the hamburger menu button. Using the `TabBar` would be a poor choice for navigation on these devices. The platform includes a `VisualStateManger` that allows you to define different visual states for different screen sizes in XAML, showing the navigation pane and hamburger menu button as appropriate. diff --git a/doc/Learn/Navigation/Advanced/HowTo-UseContentControl.md b/doc/Learn/Navigation/Advanced/HowTo-UseContentControl.md index b0d78edc6b..03ea15410a 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-UseContentControl.md +++ b/doc/Learn/Navigation/Advanced/HowTo-UseContentControl.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.ContentControl --- # How-To: Use a ContentControl to Display a View +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + If you want to display a view in a specific location in a page, `ContentControl` is the ideal UI element. For example, you might want to display a view in a `Grid` or `StackPanel` in a specific location. You can use a `ContentControl` to display a view in a specific location. ## Step-by-step diff --git a/doc/Learn/Navigation/Advanced/HowTo-UseNavigationView.md b/doc/Learn/Navigation/Advanced/HowTo-UseNavigationView.md index 280b658080..6278d33165 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-UseNavigationView.md +++ b/doc/Learn/Navigation/Advanced/HowTo-UseNavigationView.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.NavigationView --- # How-To: Use a NavigationView to Switch Views +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + Choosing the right control for your navigation needs is important, and one common choice is `NavigationView`. This control adapts to different screen sizes and offers a uniform top-level navigation experience. `NavigationView` is a great option for adaptive, customizable, and mobile-friendly navigation. The Uno Platform extensions for navigation provide built-in support for using `NavigationView` and `NavigationViewItem` to switch between views. This tutorial will show you how to configure a `NavigationView` for use with the navigation extensions. [!include[getting-help](../../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/Advanced/HowTo-UsePanel.md b/doc/Learn/Navigation/Advanced/HowTo-UsePanel.md index 5445543bdd..e5c25b4444 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-UsePanel.md +++ b/doc/Learn/Navigation/Advanced/HowTo-UsePanel.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.Panel --- # How-To: Use a Panel to Switch Views +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + Sometimes your application may need to switch between multiple views without the overhead of controls like `Frame` which support a navigation stack. In this case, it makes sense to define sectors of potential view content as **regions** and use another control to toggle the `Visibility` of the multiple views directly. This tutorial will show you how to use a `Panel` to switch between views. ## Step-by-step diff --git a/doc/Learn/Navigation/Advanced/HowTo-UseTabBar.md b/doc/Learn/Navigation/Advanced/HowTo-UseTabBar.md index 94cf18478a..83a7c57676 100644 --- a/doc/Learn/Navigation/Advanced/HowTo-UseTabBar.md +++ b/doc/Learn/Navigation/Advanced/HowTo-UseTabBar.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Advanced.TabBar --- # How-To: Use a TabBar to Switch Views +> **UnoFeatures:** `Navigation;Toolkit` (add to `` in your `.csproj`) + The navigation capabilities offered by Uno.Extensions include regions. Regions allow you to associate a specific sector of the view with an individual item on a navigation control from the same `Page`. Likewise, the Uno.Extensions library has built-in support for responding to navigation gestures from the [Toolkit](https://github.com/unoplatform/uno.toolkit.ui) `TabBar`. Follow the steps below to define a user interface centered around navigating with this control. Since `TabBar` comes from the `Uno.Toolkit` you need to make sure your project has `Toolkit` added to the `` property in the Class Library (.csproj) file and that you call the `UseToolkitNavigation` extension method on the `IApplicationBuilder` (not `IHostBuilder`). For more information about `UnoFeatures` refer to our [Using the Uno.Sdk](xref:Uno.Features.Uno.Sdk) docs. diff --git a/doc/Learn/Navigation/HowTo-DefineRoutes.md b/doc/Learn/Navigation/HowTo-DefineRoutes.md index 191e2ae561..09e6277626 100644 --- a/doc/Learn/Navigation/HowTo-DefineRoutes.md +++ b/doc/Learn/Navigation/HowTo-DefineRoutes.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Navigation.HowToDefineRoutes # How-To: Define Routes +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + Routes provide an easy and dynamic way of navigating through your app, either via code-behind or XAML. They are particularly useful when your application has a high degree of complexity in terms of navigation, especially when dealing with nested pages using TabBars and NavigationViews. In such cases, there are multiple levels of navigation rather than just one level, as in an application that simply navigates between, for instance, a Welcome page, Login page, Main page, and Second page. This topic walks through the process of defining routes. diff --git a/doc/Learn/Navigation/HowTo-DisplayItem.md b/doc/Learn/Navigation/HowTo-DisplayItem.md index 5d7fbf7c48..682feab046 100644 --- a/doc/Learn/Navigation/HowTo-DisplayItem.md +++ b/doc/Learn/Navigation/HowTo-DisplayItem.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToDisplayItem --- # How-To: Display Item Details +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic walks through how to use Navigation to display the details of an item selected from a list. This demonstrates an important aspect of Navigation which is the ability to pass data as part of a navigation request. [!include[getting-help](../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/HowTo-DisplayMessageDialog.md b/doc/Learn/Navigation/HowTo-DisplayMessageDialog.md index 8169ef6455..490f513714 100644 --- a/doc/Learn/Navigation/HowTo-DisplayMessageDialog.md +++ b/doc/Learn/Navigation/HowTo-DisplayMessageDialog.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToDisplayMessageDialog --- # How-To: Display a Message Dialog +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic walks through using Navigation to display a prompt using a `MessageDialog`. This can also be used for simple user interactions, such as a confirmation dialog, where the user is prompted with an Ok/Cancel, or Yes/No, question. [!include[getting-help](../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/HowTo-NavigateBetweenPages.md b/doc/Learn/Navigation/HowTo-NavigateBetweenPages.md index fd90681d38..adc1ac181c 100644 --- a/doc/Learn/Navigation/HowTo-NavigateBetweenPages.md +++ b/doc/Learn/Navigation/HowTo-NavigateBetweenPages.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToNavigateBetweenPages --- # How-To: Navigate Between Pages +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic covers using Navigation to navigate between two pages using frame-based navigation. [!include[getting-help](../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/HowTo-NavigateInCode.md b/doc/Learn/Navigation/HowTo-NavigateInCode.md index 7643c34705..6f0a03c2fa 100644 --- a/doc/Learn/Navigation/HowTo-NavigateInCode.md +++ b/doc/Learn/Navigation/HowTo-NavigateInCode.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToNavigateInCode --- # How-To: Navigate in Code +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic walks through controlling Navigation from code, either in the code-behind file of a Page or in the corresponding view model. One of the Navigation objectives was a single navigation construct that applies wherever you choose to write your navigation code. [!include[getting-help](../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/HowTo-NavigateInXAML.md b/doc/Learn/Navigation/HowTo-NavigateInXAML.md index c3384716cb..d606535c60 100644 --- a/doc/Learn/Navigation/HowTo-NavigateInXAML.md +++ b/doc/Learn/Navigation/HowTo-NavigateInXAML.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToNavigateInXAML --- # How-To: Navigate in XAML +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic walks through controlling Navigation from XAML. This includes specifying data that should be attached to the navigation request. [!include[getting-help](../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/HowTo-Regions.md b/doc/Learn/Navigation/HowTo-Regions.md index 6c8df495e4..54530ce3ad 100644 --- a/doc/Learn/Navigation/HowTo-Regions.md +++ b/doc/Learn/Navigation/HowTo-Regions.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.Regions --- # How-To: Define Regions +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + A Region is used to link specific sectors of a view to individual items on a navigation control within the same page. This helps in managing and organizing navigation within different sections of a view, ensuring that each section can independently display and navigate through content. Regions are usually used to manage the navigation of pages and to display or hide content with controls like `NavigationView` and `TabBars`. > [!IMPORTANT] diff --git a/doc/Learn/Navigation/HowTo-SelectValue.md b/doc/Learn/Navigation/HowTo-SelectValue.md index 7c6938c93b..3ef4917a97 100644 --- a/doc/Learn/Navigation/HowTo-SelectValue.md +++ b/doc/Learn/Navigation/HowTo-SelectValue.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToSelectValue --- # How-To: Select a Value +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic walks through using Navigation to request a value from the user. For example selecting a value from a list of items. [!include[getting-help](../includes/mvvm-approach.md)] diff --git a/doc/Learn/Navigation/HowTo-ShowDialog.md b/doc/Learn/Navigation/HowTo-ShowDialog.md index 69f39e4003..4516fc89aa 100644 --- a/doc/Learn/Navigation/HowTo-ShowDialog.md +++ b/doc/Learn/Navigation/HowTo-ShowDialog.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Navigation.HowToShowDialog --- # How-To: Display a Dialog (modal or flyout) +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + This topic provides a step-by-step guide on using Navigation to display a Dialog. ## Step-by-step diff --git a/doc/Learn/Navigation/NavigationOverview.md b/doc/Learn/Navigation/NavigationOverview.md index 51477843b8..89950113aa 100644 --- a/doc/Learn/Navigation/NavigationOverview.md +++ b/doc/Learn/Navigation/NavigationOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Navigation.Overview # Introduction +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## What is Navigation? Navigation needs to encompass a range of UI concepts: diff --git a/doc/Learn/Navigation/Walkthrough/AdvancedPageNavigation.md b/doc/Learn/Navigation/Walkthrough/AdvancedPageNavigation.md index 1623b6f68b..f1d39e2e70 100644 --- a/doc/Learn/Navigation/Walkthrough/AdvancedPageNavigation.md +++ b/doc/Learn/Navigation/Walkthrough/AdvancedPageNavigation.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, back-stack, Qualifiers.Cle # Manage Back Stack and Multi-Page Navigation +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Clear back stack when navigating ```xml diff --git a/doc/Learn/Navigation/Walkthrough/DefineRegions.md b/doc/Learn/Navigation/Walkthrough/DefineRegions.md index 67c76ad869..c88b21437d 100644 --- a/doc/Learn/Navigation/Walkthrough/DefineRegions.md +++ b/doc/Learn/Navigation/Walkthrough/DefineRegions.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, regions, Region.Attached, # Navigate between regions inside the same page (Region-based navigation) +> **UnoFeatures:** `Navigation;Toolkit` (add to `` in your `.csproj`) +> > [!IMPORTANT] > **Do not use `Region.Attached="True"` inside Shell.xaml or ExtendedSplashScreen content.** The navigation host is not ready during Shell construction. Define regions on your actual pages (like `MainPage`) instead. diff --git a/doc/Learn/Navigation/Walkthrough/DefineRoutes.md b/doc/Learn/Navigation/Walkthrough/DefineRoutes.md index ef5b41594c..7f6c211191 100644 --- a/doc/Learn/Navigation/Walkthrough/DefineRoutes.md +++ b/doc/Learn/Navigation/Walkthrough/DefineRoutes.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, routes, RouteMap, ViewMap, # Define Navigation Routes +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Register Navigation Views and Routes ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/DisplayItemDetails.md b/doc/Learn/Navigation/Walkthrough/DisplayItemDetails.md index f92431f1df..9e39e33e61 100644 --- a/doc/Learn/Navigation/Walkthrough/DisplayItemDetails.md +++ b/doc/Learn/Navigation/Walkthrough/DisplayItemDetails.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, data-passing, DataViewMap, # Pass Data During Navigation +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Pass data to another page ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/DisplayMessageDialog.md b/doc/Learn/Navigation/Walkthrough/DisplayMessageDialog.md index 960ae9d068..4f2f396ca6 100644 --- a/doc/Learn/Navigation/Walkthrough/DisplayMessageDialog.md +++ b/doc/Learn/Navigation/Walkthrough/DisplayMessageDialog.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, message-dialog, ShowMessag # Display Message Dialogs +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Show a simple message dialog ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/IRouteNotifier.md b/doc/Learn/Navigation/Walkthrough/IRouteNotifier.md index c4fef3cc4d..53da61ffab 100644 --- a/doc/Learn/Navigation/Walkthrough/IRouteNotifier.md +++ b/doc/Learn/Navigation/Walkthrough/IRouteNotifier.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, IRouteNotifier, RouteChang # Track and Respond to Route Changes +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Monitor route changes ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/NavigateBetweenPagesViaViewModel.md b/doc/Learn/Navigation/Walkthrough/NavigateBetweenPagesViaViewModel.md index 81bd1f75ed..dbf50fa430 100644 --- a/doc/Learn/Navigation/Walkthrough/NavigateBetweenPagesViaViewModel.md +++ b/doc/Learn/Navigation/Walkthrough/NavigateBetweenPagesViaViewModel.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, INavigator, ViewModel, MVV # Navigate Between Pages via ViewModel +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Navigate to another page ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/NavigateForwardAndBackwardFromCodeBehind.md b/doc/Learn/Navigation/Walkthrough/NavigateForwardAndBackwardFromCodeBehind.md index a6ae9747d7..03697ef384 100644 --- a/doc/Learn/Navigation/Walkthrough/NavigateForwardAndBackwardFromCodeBehind.md +++ b/doc/Learn/Navigation/Walkthrough/NavigateForwardAndBackwardFromCodeBehind.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, INavigator, code-behind, x # Navigate between two pages from Code-Behind +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Navigate forward to another page via button click ```xml diff --git a/doc/Learn/Navigation/Walkthrough/NavigateUsingAttachedPropertiesInXAML.md b/doc/Learn/Navigation/Walkthrough/NavigateUsingAttachedPropertiesInXAML.md index 379a1246ff..fd89ec066a 100644 --- a/doc/Learn/Navigation/Walkthrough/NavigateUsingAttachedPropertiesInXAML.md +++ b/doc/Learn/Navigation/Walkthrough/NavigateUsingAttachedPropertiesInXAML.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, XAML, Navigation.Request, # Navigate Between Pages using Navigation Attached Properties in XAML +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + * Import the Navigation namespace in XAML: ```xml diff --git a/doc/Learn/Navigation/Walkthrough/RegisterRoutes.md b/doc/Learn/Navigation/Walkthrough/RegisterRoutes.md index 4921dad769..bd985db0a9 100644 --- a/doc/Learn/Navigation/Walkthrough/RegisterRoutes.md +++ b/doc/Learn/Navigation/Walkthrough/RegisterRoutes.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, routes, ViewMap, RouteMap, # Register Navigation Routes and Associate Views to ViewModels +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Defining RouteMap and ViewMap ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/ResponsiveShell.md b/doc/Learn/Navigation/Walkthrough/ResponsiveShell.md index e8762fc334..bdb61b28c6 100644 --- a/doc/Learn/Navigation/Walkthrough/ResponsiveShell.md +++ b/doc/Learn/Navigation/Walkthrough/ResponsiveShell.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, uno-toolkit, navigation, responsive-de # Build Responsive Navigation Layouts using NavigationView and TabBar with VisualStateManager +> **UnoFeatures:** `Navigation;Toolkit` (add to `` in your `.csproj`) + * Import namespaces in XAML: ```xml diff --git a/doc/Learn/Navigation/Walkthrough/SelectValue.md b/doc/Learn/Navigation/Walkthrough/SelectValue.md index 9200a93576..4b211a643f 100644 --- a/doc/Learn/Navigation/Walkthrough/SelectValue.md +++ b/doc/Learn/Navigation/Walkthrough/SelectValue.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, GetDataAsync, ResultDataVi # Request and Return Data from Navigation +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Request data from another page ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/ShowDialog.md b/doc/Learn/Navigation/Walkthrough/ShowDialog.md index 26bb9bce49..61df0aac24 100644 --- a/doc/Learn/Navigation/Walkthrough/ShowDialog.md +++ b/doc/Learn/Navigation/Walkthrough/ShowDialog.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, dialog, modal, flyout, Qua # Display Dialogs as Flyouts or Modals +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Show dialog from code ```csharp diff --git a/doc/Learn/Navigation/Walkthrough/UseContentControl.md b/doc/Learn/Navigation/Walkthrough/UseContentControl.md index 03facf51c3..908b59cb50 100644 --- a/doc/Learn/Navigation/Walkthrough/UseContentControl.md +++ b/doc/Learn/Navigation/Walkthrough/UseContentControl.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, ContentControl, UserContro # Display Views in Specific Locations using ContentControl with Region-Based Navigation +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + * Import namespaces in XAML: ```xml diff --git a/doc/Learn/Navigation/Walkthrough/UseNavigationView.md b/doc/Learn/Navigation/Walkthrough/UseNavigationView.md index 0d5f77f32d..2a36e5056c 100644 --- a/doc/Learn/Navigation/Walkthrough/UseNavigationView.md +++ b/doc/Learn/Navigation/Walkthrough/UseNavigationView.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, NavigationView, Navigation # Navigate Between Menu Items using NavigationView with Adaptive Region-Based Navigation +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + ## Create menu-based navigation interface Create the basic structure with NavigationView and content area. diff --git a/doc/Learn/Navigation/Walkthrough/UsePanel.md b/doc/Learn/Navigation/Walkthrough/UsePanel.md index 2d41c52f15..cc8b8da032 100644 --- a/doc/Learn/Navigation/Walkthrough/UsePanel.md +++ b/doc/Learn/Navigation/Walkthrough/UsePanel.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, navigation, Panel, Grid, StackPanel, r # Switch Between Views using Panel with Visibility-Based Region Navigation +> **UnoFeatures:** `Navigation` (add to `` in your `.csproj`) + * Import Navigation namespace in XAML: ```xml diff --git a/doc/Learn/Navigation/Walkthrough/UseTabBar.md b/doc/Learn/Navigation/Walkthrough/UseTabBar.md index fb18f15b8f..30d71f2b7d 100644 --- a/doc/Learn/Navigation/Walkthrough/UseTabBar.md +++ b/doc/Learn/Navigation/Walkthrough/UseTabBar.md @@ -6,6 +6,8 @@ tags: [uno, uno-platform, uno-extensions, uno-toolkit, navigation, TabBar, TabBa # Navigate Between Tab Views using TabBar with Region-Based Content Switching +> **UnoFeatures:** `Navigation;Toolkit` (add to `` in your `.csproj`) + * Enable Toolkit navigation in `App.xaml.cs`: ```csharp diff --git a/doc/Learn/Serialization/HowTo-Serialization.md b/doc/Learn/Serialization/HowTo-Serialization.md index 1b8d80b62d..5de5614035 100644 --- a/doc/Learn/Serialization/HowTo-Serialization.md +++ b/doc/Learn/Serialization/HowTo-Serialization.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.Serialization.HowToSerialization --- # How-To: Serialize and Deserialize JSON Data +> **UnoFeatures:** `Serialization` (add to `` in your `.csproj`) + Accessing the serialized and deserialized representation of an object can be important for dynamic, data-rich applications. Uno.Extensions supports the [new serialization technique](https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-source-generator) powered by code generation, but you can optionally revert to the previous one which uses reflection. ## Step-by-step diff --git a/doc/Learn/Serialization/SerializationOverview.md b/doc/Learn/Serialization/SerializationOverview.md index 83f2a1f96c..396df00168 100644 --- a/doc/Learn/Serialization/SerializationOverview.md +++ b/doc/Learn/Serialization/SerializationOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Serialization.Overview # Serialization +> **UnoFeatures:** `Serialization` (add to `` in your `.csproj`) + **Serialization** involves converting an object into a format that can be easily stored or transmitted. On the receiving end, the object is reconstructed back into its original form through **deserialization**. These two operations complement each other and can be important for dynamic, data-rich applications. `Uno.Extensions.Serialization` allows for simplified access to serializer objects as dependencies. This library supports the new serialization [technique](https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-source-generator) powered by code generation. diff --git a/doc/Learn/Storage/StorageOverview.md b/doc/Learn/Storage/StorageOverview.md index 81c4a58f48..41c0c96e4f 100644 --- a/doc/Learn/Storage/StorageOverview.md +++ b/doc/Learn/Storage/StorageOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Storage.Overview # Storage +> **UnoFeatures:** `Storage` (add to `` in your `.csproj`) + Uno.Extensions.Storage facilitate local data storage across multiple platforms, including WebAssembly, Android, iOS, macOS, Desktop and Windows. This extension is particularly useful for applications that require secure, persistent storage of user preferences, configuration settings, and sensitive information such as tokens and credentials. > [!IMPORTANT] diff --git a/doc/Learn/ThemeService/HowTo-UseThemeService.md b/doc/Learn/ThemeService/HowTo-UseThemeService.md index 28769b1b92..88e2f9e518 100644 --- a/doc/Learn/ThemeService/HowTo-UseThemeService.md +++ b/doc/Learn/ThemeService/HowTo-UseThemeService.md @@ -3,6 +3,8 @@ uid: Uno.Extensions.ThemeService.Overview --- # How to use Theme Service +> **UnoFeatures:** `ThemeService` (add to `` in your `.csproj`) + This topic explains how to use the `ThemeService` for runtime theme switching and persisting user theme preferences. ## Automatic Registration with DI diff --git a/doc/Learn/Validation/ValidationOverview.md b/doc/Learn/Validation/ValidationOverview.md index c9e081b448..86e7f4b45b 100644 --- a/doc/Learn/Validation/ValidationOverview.md +++ b/doc/Learn/Validation/ValidationOverview.md @@ -4,6 +4,8 @@ uid: Uno.Extensions.Validation.Overview # Validation +> **Note:** Validation is included when using the Extensions UnoFeature + Uno.Extensions.Validation provides an `IValidator` service which enforces that properties of an object follow a set of characteristics or behaviors represented by [attributes](https://learn.microsoft.com/dotnet/api/system.componentmodel.dataannotations) declaratively applied to them. This is useful for ensuring that data entered by users is valid before it is saved to a database or sent to a web service. ## Service registration diff --git a/doc/Learn/Walkthrough/Authentication.Oidc.howto.md b/doc/Learn/Walkthrough/Authentication.Oidc.howto.md index c10e9026c3..ce11837d15 100644 --- a/doc/Learn/Walkthrough/Authentication.Oidc.howto.md +++ b/doc/Learn/Walkthrough/Authentication.Oidc.howto.md @@ -4,6 +4,8 @@ title: Authenticate Users with OIDC tags: [authentication, oidc, navigation] --- +> **UnoFeatures:** `AuthenticationOidc` (add to `` in your `.csproj`) + # Let users sign in with OIDC **Goal:** enable sign-in against an OpenID Connect (OIDC) provider in an Uno.Extensions app. diff --git a/doc/Learn/Walkthrough/Authentication.Web.howto.md b/doc/Learn/Walkthrough/Authentication.Web.howto.md index d6cca29540..d7e6db8d82 100644 --- a/doc/Learn/Walkthrough/Authentication.Web.howto.md +++ b/doc/Learn/Walkthrough/Authentication.Web.howto.md @@ -4,6 +4,8 @@ title: Authenticate Users with a Web View tags: [authentication, web, navigation] --- +> **UnoFeatures:** `Authentication` (add to `` in your `.csproj`) + # Let users sign in from a web view ## 1. Show a web page to sign users in diff --git a/doc/Learn/Walkthrough/Authentication.howto.md b/doc/Learn/Walkthrough/Authentication.howto.md index a7120144df..80de1bb23a 100644 --- a/doc/Learn/Walkthrough/Authentication.howto.md +++ b/doc/Learn/Walkthrough/Authentication.howto.md @@ -4,6 +4,8 @@ title: Authenticate Users with Custom Logic tags: [authentication, custom-login, navigation] --- +> **UnoFeatures:** `Authentication` (add to `` in your `.csproj`) + ## 1. Sign in with a hard-coded user **Goal** diff --git a/doc/Learn/Walkthrough/AuthenticationMSAL.howto.md b/doc/Learn/Walkthrough/AuthenticationMSAL.howto.md index 9ceb33522a..a599e3a15c 100644 --- a/doc/Learn/Walkthrough/AuthenticationMSAL.howto.md +++ b/doc/Learn/Walkthrough/AuthenticationMSAL.howto.md @@ -4,6 +4,8 @@ title: Authenticate Users with MSAL tags: [authentication, msal, navigation] --- +> **UnoFeatures:** `AuthenticationMsal` (add to `` in your `.csproj`) + # Sign in with Microsoft account (MSAL) This how-to shows how to let users sign in with their Microsoft identity in an Uno Platform app using **Uno.Extensions** and **MSAL**. diff --git a/doc/Learn/Walkthrough/Configuration.howto.md b/doc/Learn/Walkthrough/Configuration.howto.md index 0c25a08584..12db2a8681 100644 --- a/doc/Learn/Walkthrough/Configuration.howto.md +++ b/doc/Learn/Walkthrough/Configuration.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Configuration.Configuration.HowTo title: Load Configuration Sections tags: [configuration, appsettings, options] --- + +> **UnoFeatures:** `Configuration` (add to `` in your `.csproj`) + # Load configuration sections from embedded JSON Use Uno configuration to hydrate strongly typed options from embedded `appsettings.json` files and inject them into your services. diff --git a/doc/Learn/Walkthrough/HostingSetup.howto.md b/doc/Learn/Walkthrough/HostingSetup.howto.md index 89e7ae3de6..24561583e9 100644 --- a/doc/Learn/Walkthrough/HostingSetup.howto.md +++ b/doc/Learn/Walkthrough/HostingSetup.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Hosting.HostingSetup.HowTo title: Configure Uno Hosting tags: [hosting, dependency-injection, startup] --- + +> **UnoFeatures:** `Hosting` (add to `` in your `.csproj`) + # Configure hosting for dependency injection Create an Uno host so you can register services, windows, and features through a unified startup pipeline. diff --git a/doc/Learn/Walkthrough/Http.howto.md b/doc/Learn/Walkthrough/Http.howto.md index 908fcf09d6..252f768faf 100644 --- a/doc/Learn/Walkthrough/Http.howto.md +++ b/doc/Learn/Walkthrough/Http.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Http.Http.HowTo title: Centralize HTTP Endpoints tags: [http, configuration, typed-client] --- + +> **UnoFeatures:** `Http` (add to `` in your `.csproj`) + # Centralize HTTP endpoints from appsettings Drive Uno Platform HTTP clients from configuration so each service shares resilient, named `HttpClient` instances. diff --git a/doc/Learn/Walkthrough/HttpEndpointOptions.howto.md b/doc/Learn/Walkthrough/HttpEndpointOptions.howto.md index 55f5a08860..47703ae5ce 100644 --- a/doc/Learn/Walkthrough/HttpEndpointOptions.howto.md +++ b/doc/Learn/Walkthrough/HttpEndpointOptions.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Http.HttpEndpointOptions.HowTo title: Customize Endpoint Options tags: [http, configuration, headers, endpoint-options] --- + +> **UnoFeatures:** `Http` (add to `` in your `.csproj`) + # Inject custom headers with endpoint options Capture API-specific settings in a custom options type and apply them each time Uno Extensions builds the `HttpClient`. diff --git a/doc/Learn/Walkthrough/Kiota.howto.md b/doc/Learn/Walkthrough/Kiota.howto.md index 441016ea6e..4b6a2b488b 100644 --- a/doc/Learn/Walkthrough/Kiota.howto.md +++ b/doc/Learn/Walkthrough/Kiota.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Http.Kiota.HowTo title: Generate Kiota Clients tags: [http, kiota, openapi, typed-client] --- + +> **UnoFeatures:** `HttpKiota` (add to `` in your `.csproj`) + # Generate Kiota clients from OpenAPI Turn an OpenAPI description into a typed client, register it with Uno Extensions, and wire it to your view models. diff --git a/doc/Learn/Walkthrough/Localization.howto.md b/doc/Learn/Walkthrough/Localization.howto.md index 8e34850975..c0d35b7831 100644 --- a/doc/Learn/Walkthrough/Localization.howto.md +++ b/doc/Learn/Walkthrough/Localization.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Localization.Localization.HowTo title: Localize Your App tags: [localization, globalization, string-localizer] --- + +> **UnoFeatures:** `Localization` (add to `` in your `.csproj`) + # Localize strings and switch cultures at runtime Register Uno localization, resolve localized strings through `IStringLocalizer`, and update the active culture from your view models. diff --git a/doc/Learn/Walkthrough/Logging.howto.md b/doc/Learn/Walkthrough/Logging.howto.md index 08e9ad2180..f41b0a30c2 100644 --- a/doc/Learn/Walkthrough/Logging.howto.md +++ b/doc/Learn/Walkthrough/Logging.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Logging.Logging.HowTo title: Add Structured Logging tags: [logging, diagnostics, observability] --- + +> **UnoFeatures:** `Logging` (add to `` in your `.csproj`) + # Add structured logging to your Uno app Enable Uno logging so platform-specific providers capture diagnostic information, then inject `ILogger` into your services and view models. diff --git a/doc/Learn/Walkthrough/Refit.howto.md b/doc/Learn/Walkthrough/Refit.howto.md index 1b0cc8a392..2d353eb54c 100644 --- a/doc/Learn/Walkthrough/Refit.howto.md +++ b/doc/Learn/Walkthrough/Refit.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Http.Refit.HowTo title: Build Refit Clients tags: [http, refit, typed-client, configuration] --- + +> **UnoFeatures:** `HttpRefit` (add to `` in your `.csproj`) + # Build Refit endpoints from configuration Describe your REST API with a Refit interface, register it once, and let Uno Extensions provide a configured `HttpClient`. diff --git a/doc/Learn/Walkthrough/Serialization.howto.md b/doc/Learn/Walkthrough/Serialization.howto.md index cf24bafbf1..d3be210df5 100644 --- a/doc/Learn/Walkthrough/Serialization.howto.md +++ b/doc/Learn/Walkthrough/Serialization.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Serialization.Serialization.HowTo title: Serialize JSON with Source Generators tags: [serialization, json, system-text-json] --- + +> **UnoFeatures:** `Serialization` (add to `` in your `.csproj`) + # Serialize JSON with source generators Register Uno serialization with source-generated metadata so your apps can serialize and deserialize models efficiently using `System.Text.Json`. diff --git a/doc/Learn/Walkthrough/WritableConfiguration.howto.md b/doc/Learn/Walkthrough/WritableConfiguration.howto.md index 4dfe461e7a..e84e765702 100644 --- a/doc/Learn/Walkthrough/WritableConfiguration.howto.md +++ b/doc/Learn/Walkthrough/WritableConfiguration.howto.md @@ -3,6 +3,9 @@ uid: Uno.Extensions.Configuration.WritableConfiguration.HowTo title: Persist Writable Settings tags: [configuration, writable, options] --- + +> **UnoFeatures:** `Configuration` (add to `` in your `.csproj`) + # Persist writable settings with `IWritableOptions` Capture user preferences by updating configuration sections at runtime through Uno’s writable options support.