diff --git a/.editorconfig b/.editorconfig index 467b91c05c..bce167771a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -142,4 +142,13 @@ dotnet_diagnostic.CA2208.severity = error dotnet_diagnostic.CA1834.severity = error # IDE0220: Add explicit cast -dotnet_diagnostic.IDE0220.severity = error \ No newline at end of file +dotnet_diagnostic.IDE0220.severity = error + +# Warning CA2264 : Calling 'ArgumentNullException.ThrowIfNull' and passing a non-nullable value is a no-op +dotnet_diagnostic.CA2264.severity = error + +# MVMTK0042: The field [ObservableProperty] can be converted to a partial property +dotnet_diagnostic.MVMTK0042.severity = error + +# XC0045: Binding Property not found +dotnet_diagnostic.XC0045.severity = error \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index b7803c1c6f..0c943b5fb4 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,17 +1,26 @@ - net8.0 - 8.0.71 - latest enable - enable NETSDK1023 - true - true - false + net9.0 + preview + enable true + true true + false + + + enable + all + + + 9.0.21 + 10.0.0 + true + true + true false @@ -39,40 +48,153 @@ CS1712: Type parameter has no matching typeparam tag in the XML comment CS1723: XML comment has cref attribute that refers to a type parameter CS1734: XML comment has a paramref tag, but there is no parameter by that name - - xUnit1012: Null should not be used for type parameter - xUnit2021: Assert.ThrowsAsync is async. The resulting task should be awaited - - IL2***: Trim Warnings - - IL3***: AOT Warnings - + MVMTK0042: The field [ObservableProperty] can be converted to a partial property + CsWinRT1028: Class implements WinRT interfaces but isn't marked partial + CsWinRT1030: Class implements WinRT interfaces that require unsafe code + NU1900 Error communicating with package source, while getting vulnerability information. + NU1901 Package with low severity detected + NU1902 Package with moderate severity detected + NU1903 Package with high severity detected + NU1904 Package with critical severity detected + NU1905 An audit source does not provide a vulnerability database + xUnit1000: Test classes must be public + xUnit1001: Fact methods cannot have parameters + xUnit1002: Test methods cannot have multiple Fact or Theory attributes + xUnit1003: Theory methods must have test data + xUnit1004: Test methods should not be skipped + xUnit1005: Fact methods should not have test data + xUnit1006: Theory methods should have parameters + xUnit1007: ClassData must point at a valid class + xUnit1008: Test data attribute should only be used on a Theory + xUnit1009: InlineData values must match the number of method parameters + xUnit1010: The value is not convertible to the method parameter type + xUnit1011: There is no matching method parameter + xUnit1012: Null should not be used for value type parameters + xUnit1013: Public method should be marked as test + xUnit1014: MemberData should use nameof operator for member name + xUnit1015: MemberData must reference an existing member + xUnit1016: MemberData must reference a public member + xUnit1017: MemberData must reference a static member + xUnit1018: MemberData must reference a valid member kind + xUnit1019: MemberData must reference a member providing a valid data type + xUnit1020: MemberData must reference a property with a getter + xUnit1021: MemberData should not have parameters if the referenced member is not a method + xUnit1022: Theory methods cannot have a parameter array + xUnit1023: Theory methods cannot have default parameter values + xUnit1024: Test methods cannot have overloads + xUnit1025: InlineData should be unique within the Theory it belongs to + xUnit1026: Theory methods should use all of their parameters + xUnit1027: Collection definition classes must be public + xUnit1028: Test method must have valid return type + xUnit1029: Local functions cannot be test functions + xUnit1030: Do not call ConfigureAwait in test method + xUnit1031: Do not use blocking task operations in test method + xUnit1032: Test classes cannot be nested within a generic class + xUnit1033: Test classes decorated with 'Xunit.IClassFixture' or 'Xunit.ICollectionFixture' should add a constructor argument of type TFixture + xUnit1034: Null should only be used for nullable parameters + xUnit1035: The value is not convertible to the method parameter type + xUnit1036: There is no matching method parameter + xUnit1037: There are fewer theory data type arguments than required by the parameters of the test method + xUnit1038: There are more theory data type arguments than allowed by the parameters of the test method + xUnit1039: The type argument to theory data is not compatible with the type of the corresponding test method parameter + xUnit1040: The type argument to theory data is nullable, while the type of the corresponding test method parameter is not + xUnit1041: Fixture arguments to test classes must have fixture sources + xUnit1042: The member referenced by the MemberData attribute returns untyped data rows + xUnit1043: Constructors on classes derived from FactAttribute must be public when used on test methods + xUnit1048: Avoid using 'async void' for test methods as it is deprecated in xUnit.net v3 + xUnit1049: Do not use 'async void' for test methods as it is no longer supported + xUnit1050: The class referenced by the ClassData attribute returns untyped data rows + xUnit1051: Calls to methods which accept CancellationToken should use TestContext.Current.CancellationToken + xUnit2000: Constants and literals should be the expected argument + xUnit2001: Do not use invalid equality check + xUnit2002: Do not use null check on value type + xUnit2003: Do not use equality check to test for null value + xUnit2004: Do not use equality check to test for boolean conditions + xUnit2005: Do not use identity check on value type + xUnit2006: Do not use invalid string equality check + xUnit2007: Do not use typeof expression to check the type + xUnit2008: Do not use boolean check to match on regular expressions + xUnit2009: Do not use boolean check to check for substrings + xUnit2010: Do not use boolean check to check for string equality + xUnit2011: Do not use empty collection check + xUnit2012: Do not use Enumerable.Any() to check if a value exists in a collection + xUnit2013: Do not use equality check to check for collection size. + xUnit2014: Do not use throws check to check for asynchronously thrown exception + xUnit2015: Do not use typeof expression to check the exception type + xUnit2016: Keep precision in the allowed range when asserting equality of doubles or decimals. + xUnit2017: Do not use Contains() to check if a value exists in a collection + xUnit2018: Do not compare an object's exact type to an abstract class or interface + xUnit2019: Do not use obsolete throws check to check for asynchronously thrown exception + xUnit2020: Do not use always-failing boolean assertion to fail a test + xUnit2021: Async assertions should be awaited + xUnit2022: Boolean assertions should not be negated + xUnit2023: Do not use collection methods for single-item collections + xUnit2024: Do not use boolean asserts for simple equality tests + xUnit2025: The boolean assertion statement can be simplified + xUnit2026: Comparison of sets must be done with IEqualityComparer + xUnit2027: Comparison of sets to linear containers have undefined results + xUnit2028: Do not use Assert.Empty or Assert.NotEmpty with problematic types + xUnit2029: Do not use Assert.Empty to check if a value does not exist in a collection + xUnit2030: Do not use Assert.NotEmpty to check if a value exists in a collection + xUnit2031: Do not use Where clause with Assert.Single + xUnit2032: Type assertions based on 'assignable from' are confusingly named + xUnit3000: Classes which cross AppDomain boundaries must derive directly or indirectly from LongLivedMarshalByRefObject + xUnit3001: Classes that are marked as serializable (or created by the test framework at runtime) must have a public parameterless constructor + xUnit3002: Classes which are JSON serializable should not be tested for their concrete type + XC0045: Binding: Property not found + XC0103: Consider attributing the markup extension with [RequireService] or [AcceptEmptyServiceProvider] if it doesn't require any + IL2***: Trim Warnings + IL3***: AOT Warnings RS2007: Analyzer release file 'AnalyzerReleases.Shipped.md' has a missing or invalid release header--> - nullable, - CS0419,CS1570,CS1571,CS1572,CS1573,CS1574,CS1580,CS1581,CS1584,CS1587,CS1589,CS1590,CS1591,CS1592,CS1598,CS1658,CS1710,CS1711,CS1712,CS1723,CS1734, - xUnit1012,xUnit2021, - IL2001,IL2002,IL2003,IL2004,IL2005,IL2006,IL2007,IL2008,IL2009, - IL2010,IL2011,IL2012,IL2013,IL2014,IL2015,IL2016,IL2017,IL2018,IL2019, - IL2020,IL2021,IL2022,IL2023,IL2024,IL2025,IL2026,IL2027,IL2028,IL2029, - IL2030,IL2031,IL2032,IL2033,IL2034,IL2035,IL2036,IL2037,IL2038,IL2039, - IL2040,IL2041,IL2042,IL2043,IL2044,IL2045,IL2046,IL2047,IL2048,IL2049, - IL2050,IL2051,IL2052,IL2053,IL2054,IL2055,IL2056,IL2057,IL2058,IL2059, - IL2060,IL2061,IL2062,IL2063,IL2064,IL2065,IL2066,IL2067,IL2068,IL2069, - IL2070,IL2071,IL2072,IL2073,IL2074,IL2075,IL2076,IL2077,IL2078,IL2079, - IL2080,IL2081,IL2082,IL2083,IL2084,IL2085,IL2086,IL2087,IL2088,IL2089, - IL2090,IL2091,IL2092,IL2093,IL2094,IL2095,IL2096,IL2097,IL2098,IL2099, - IL2100,IL2101,IL2102,IL2103,IL2104,IL2105,IL2106,IL2107,IL2108,IL2109, - IL2110,IL2111,IL2112,IL2113,IL2114,IL2115,IL2116,IL2117,IL2118,IL2119, - IL2120,IL2121,IL2122, - IL3050,IL3051,IL3052,IL3053,IL3054,IL3055,IL3056, - RS2007 - + + nullable, + CS0419,CS1570,CS1571,CS1572,CS1573,CS1574,CS1580,CS1581,CS1584,CS1587,CS1589,CS1590,CS1591,CS1592,CS1598,CS1658,CS1710,CS1711,CS1712,CS1723,CS1734, + CsWinRT1028,CsWinRT1030, + MVMTK0042, + NU1900,NU1901,NU1902,NU1903,NU1904,NU1905, + xUnit1000,xUnit1001,xUnit1002,xUnit1003,xUnit1004,xUnit1005,xUnit1006,xUnit1007,xUnit1008,xUnit1009,xUnit1010,xUnit1011,xUnit1012,xUnit1013,xUnit1014,xUnit1015,xUnit1016,xUnit1017,xUnit1018,xUnit1019,xUnit1020,xUnit1021,xUnit1022,xUnit1023,xUnit1024,xUnit1025,xUnit1026,xUnit1027,xUnit1028,xUnit1029,xUnit1030,xUnit1031,xUnit1032,xUnit1033,xUnit1034,xUnit1035,xUnit1036,xUnit1037,xUnit1038,xUnit1039,xUnit1040,xUnit1041,xUnit1042,xUnit1043,xUnit1048,xUnit1049,xUnit1050,xUnit1051, + xUnit2000,xUnit2001,xUnit2002,xUnit2003,xUnit2004,xUnit2005,xUnit2006,xUnit2007,xUnit2008,xUnit2009,xUnit2010,xUnit2011,xUnit2012,xUnit2013,xUnit2014,xUnit2015,xUnit2016,xUnit2017,xUnit2018,xUnit2019,xUnit2020,xUnit2021,xUnit2022,xUnit2023,xUnit2024,xUnit2025,xUnit2026,xUnit2027,xUnit2028,xUnit2029,xUnit2030,xUnit2031,xUnit2032, + xUnit3000,xUnit3001,xUnit3002, + XC0045,XC0103, + IL2001,IL2002,IL2003,IL2004,IL2005,IL2006,IL2007,IL2008,IL2009, + IL2010,IL2011,IL2012,IL2013,IL2014,IL2015,IL2016,IL2017,IL2018,IL2019, + IL2020,IL2021,IL2022,IL2023,IL2024,IL2025,IL2026,IL2027,IL2028,IL2029, + IL2030,IL2031,IL2032,IL2033,IL2034,IL2035,IL2036,IL2037,IL2038,IL2039, + IL2040,IL2041,IL2042,IL2043,IL2044,IL2045,IL2046,IL2047,IL2048,IL2049, + IL2050,IL2051,IL2052,IL2053,IL2054,IL2055,IL2056,IL2057,IL2058,IL2059, + IL2060,IL2061,IL2062,IL2063,IL2064,IL2065,IL2066,IL2067,IL2068,IL2069, + IL2070,IL2071,IL2072,IL2073,IL2074,IL2075,IL2076,IL2077,IL2078,IL2079, + IL2080,IL2081,IL2082,IL2083,IL2084,IL2085,IL2086,IL2087,IL2088,IL2089, + IL2090,IL2091,IL2092,IL2093,IL2094,IL2095,IL2096,IL2097,IL2098,IL2099, + IL2100,IL2101,IL2102,IL2103,IL2104,IL2105,IL2106,IL2107,IL2108,IL2109, + IL2110,IL2111,IL2112,IL2113,IL2114,IL2115,IL2116,IL2117,IL2118,IL2119, + IL2120,IL2121,IL2122, + IL3050,IL3051,IL3052,IL3053,IL3054,IL3055,IL3056, + RS2007 + + + + + + + true + + + true + + + true + + + embedded - + + - + + true diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 469a819ccc..7e30ed19e3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -6,8 +6,8 @@ variables: NugetPackageVersionCamera: '$(CurrentSemanticVersion)' NugetPackageVersionMediaElement: '$(CurrentSemanticVersion)' NugetPackageVersionMaps: '$(CurrentSemanticVersion)' - TOOLKIT_NET_VERSION: '8.0.303' - LATEST_NET_VERSION: '8.0.x' + TOOLKIT_NET_VERSION: '9.0.101' + LATEST_NET_VERSION: '9.0.x' PathToLibrarySolution: 'src/CommunityToolkit.Maui.sln' PathToSamplesSolution: 'samples/CommunityToolkit.Maui.Sample.sln' PathToCommunityToolkitCsproj: 'src/CommunityToolkit.Maui/CommunityToolkit.Maui.csproj' @@ -28,8 +28,8 @@ variables: PathToCommunityToolkitAnalyzersUnitTestCsproj: 'src/CommunityToolkit.Maui.Analyzers.UnitTests/CommunityToolkit.Maui.Analyzers.UnitTests.csproj' PathToCommunityToolkitAnalyzersBenchmarkCsproj: 'src/CommunityToolkit.Maui.Analyzers.Benchmarks/CommunityToolkit.Maui.Analyzers.Benchmarks.csproj' DotNetMauiRollbackFile: 'https://maui.blob.core.windows.net/metadata/rollbacks/8.0.6.json' - CommunityToolkitSampleApp_Xcode_Version: '16' - CommunityToolkitLibrary_Xcode_Version: '15.4' + CommunityToolkitSampleApp_Xcode_Version: '16.1' + CommunityToolkitLibrary_Xcode_Version: '16.1' trigger: branches: @@ -61,7 +61,7 @@ jobs: 'Windows': image: 'windows-latest' 'macOS': - image: 'macos-14' + image: 'macos-15' pool: vmImage: $(image) steps: @@ -69,7 +69,10 @@ jobs: displayName: 'Set Xcode v$(CommunityToolkitSampleApp_Xcode_Version)' condition: eq(variables['Agent.OS'], 'Darwin') # Only run this step on macOS inputs: - script: echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(CommunityToolkitSampleApp_Xcode_Version).app;sudo xcode-select --switch /Applications/Xcode_$(CommunityToolkitSampleApp_Xcode_Version).app/Contents/Developer + script: | + echo Installed Xcode Versions: + ls -al /Applications | grep Xcode + echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(CommunityToolkitSampleApp_Xcode_Version).app;sudo xcode-select --switch /Applications/Xcode_$(CommunityToolkitSampleApp_Xcode_Version).app/Contents/Developer - task: UseDotNet@2 displayName: 'Install Latest .NET SDK, v$(LATEST_NET_VERSION)' @@ -81,7 +84,9 @@ jobs: - task: CmdLine@2 displayName: 'Install Latest .NET MAUI Workload' inputs: - script: 'dotnet workload install maui' + script: | + dotnet workload install maui + dotnet workload update - powershell: | Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1' @@ -139,7 +144,7 @@ jobs: 'Windows': image: 'windows-latest' 'macOS': - image: 'macos-14' + image: 'macos-15' pool: vmImage: $(image) steps: @@ -199,7 +204,10 @@ jobs: displayName: 'Set Xcode v$(CommunityToolkitLibrary_Xcode_Version)' condition: eq(variables['Agent.OS'], 'Darwin') # Only run this step on macOS inputs: - script: echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app;sudo xcode-select --switch /Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app/Contents/Developer + script: | + echo Installed Xcode Versions: + ls -al /Applications | grep Xcode + echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app;sudo xcode-select --switch /Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app/Contents/Developer - task: UseDotNet@2 displayName: Install .NET v$(TOOLKIT_NET_VERSION) @@ -211,7 +219,9 @@ jobs: - task: CmdLine@2 displayName: 'Install .NET MAUI Workload $(TOOLKIT_NET_VERSION)' inputs: - script: dotnet workload install maui --skip-sign-check --source https://api.nuget.org/v3/index.json + script: | + dotnet workload install maui + dotnet workload update - powershell: | Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1' @@ -451,13 +461,14 @@ jobs: 'Windows': image: 'windows-latest' 'macOS': - image: 'macos-14' + image: 'macos-15' pool: vmImage: $(image) steps: - script: | - sudo xcode-select -s /Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app - sudo xcode-select -p + echo Installed Xcode Versions: + ls -al /Applications | grep Xcode + echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app;sudo xcode-select --switch /Applications/Xcode_$(CommunityToolkitLibrary_Xcode_Version).app/Contents/Developer displayName: 'Set Xcode v$(CommunityToolkitLibrary_Xcode_Version)' condition: eq(variables['Agent.OS'], 'Darwin') # Only run this step on macOS @@ -471,7 +482,9 @@ jobs: - task: CmdLine@2 displayName: 'Install .NET MAUI Workload' inputs: - script : 'dotnet workload install maui' + script : | + dotnet workload install maui + dotnet workload update - pwsh: | Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1' diff --git a/global.json b/global.json index ce2e41208c..9455c4195b 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.303", + "version": "9.0.101", "rollForward": "latestFeature", "allowPrerelease": false } diff --git a/samples/CommunityToolkit.Maui.Sample/App.xaml.cs b/samples/CommunityToolkit.Maui.Sample/App.xaml.cs index 9b356596ed..64634e88c9 100644 --- a/samples/CommunityToolkit.Maui.Sample/App.xaml.cs +++ b/samples/CommunityToolkit.Maui.Sample/App.xaml.cs @@ -4,10 +4,14 @@ namespace CommunityToolkit.Maui.Sample; public partial class App : Application { - public App() + readonly AppShell appShell; + + public App(AppShell appShell) { InitializeComponent(); - MainPage = new AppShell(); + this.appShell = appShell; } + + protected override Window CreateWindow(IActivationState? activationState) => new(appShell); } \ No newline at end of file diff --git a/samples/CommunityToolkit.Maui.Sample/AppShell.xaml b/samples/CommunityToolkit.Maui.Sample/AppShell.xaml index 1ee3e5751a..5cd35824d3 100644 --- a/samples/CommunityToolkit.Maui.Sample/AppShell.xaml +++ b/samples/CommunityToolkit.Maui.Sample/AppShell.xaml @@ -17,8 +17,8 @@ x:Name="flyout" Title="{OnPlatform WinUI='Toolkit Features', Default={x:Null}}" FlyoutBackgroundColor="{OnPlatform WinUI=Transparent, - Default={AppThemeBinding Light={StaticResource White}, - Dark={StaticResource Black}}}" + Default={AppThemeBinding Light= White, + Dark= Black}}" FlyoutBehavior="{OnPlatform WinUI=Locked, Default=Flyout}"> @@ -100,6 +100,7 @@ diff --git a/samples/CommunityToolkit.Maui.Sample/CommunityToolkit.Maui.Sample.csproj b/samples/CommunityToolkit.Maui.Sample/CommunityToolkit.Maui.Sample.csproj index b07f22205f..02e75fa0bc 100644 --- a/samples/CommunityToolkit.Maui.Sample/CommunityToolkit.Maui.Sample.csproj +++ b/samples/CommunityToolkit.Maui.Sample/CommunityToolkit.Maui.Sample.csproj @@ -29,11 +29,11 @@ - - - 10.0.19041.53 true + + + CsWinRT1028 - + true - + @@ -65,19 +65,20 @@ - - - - + + + + + - 14.2 - 14.0 - 21.0 - 10.0.17763.0 + 15.0 + 15.0 + 26.0 + 10.0.19041.0 6.5 - 10.0.17763.0 + 10.0.19041.0 @@ -94,12 +95,14 @@ win-x64 - - true - android-arm;android-arm64;android-x86;android-x64 - - maccatalyst-arm64;maccatalyst-x64 + + + + + static + + \ No newline at end of file diff --git a/samples/CommunityToolkit.Maui.Sample/Converters/CompareDoubleToColorConverter.cs b/samples/CommunityToolkit.Maui.Sample/Converters/CompareDoubleToColorConverter.cs index fedcc50530..565e3d97ed 100644 --- a/samples/CommunityToolkit.Maui.Sample/Converters/CompareDoubleToColorConverter.cs +++ b/samples/CommunityToolkit.Maui.Sample/Converters/CompareDoubleToColorConverter.cs @@ -6,6 +6,7 @@ namespace CommunityToolkit.Maui.Sample.Converters; /// Compares a double value against the ComparingValue property /// and returns a based on the comparison. /// -public sealed class CompareDoubleToColorConverter : CompareConverter +[AcceptEmptyServiceProvider] +public sealed partial class CompareDoubleToColorConverter : CompareConverter { } \ No newline at end of file diff --git a/samples/CommunityToolkit.Maui.Sample/MauiProgram.cs b/samples/CommunityToolkit.Maui.Sample/MauiProgram.cs index 4e9f913559..3fbe220fba 100644 --- a/samples/CommunityToolkit.Maui.Sample/MauiProgram.cs +++ b/samples/CommunityToolkit.Maui.Sample/MauiProgram.cs @@ -1,6 +1,5 @@ using System.Diagnostics.CodeAnalysis; using CommunityToolkit.Maui.ApplicationModel; -using CommunityToolkit.Maui.Maps; using CommunityToolkit.Maui.Markup; using CommunityToolkit.Maui.Media; using CommunityToolkit.Maui.Sample.Models; @@ -34,6 +33,7 @@ using Polly; #if WINDOWS10_0_17763_0_OR_GREATER +using CommunityToolkit.Maui.Maps; using Microsoft.UI; using Microsoft.UI.Composition.SystemBackdrops; using Microsoft.UI.Windowing; @@ -47,6 +47,7 @@ namespace CommunityToolkit.Maui.Sample; public static class MauiProgram { + [RequiresUnreferencedCode($"{nameof(CommunityToolkit.Maui.Views.Expander)} and {nameof(TouchBehaviorCollectionViewMultipleSelectionPage)} are not type safe")] public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder() @@ -68,8 +69,16 @@ public static MauiApp CreateMauiApp() .UseMauiCommunityToolkitCamera() .UseMauiCommunityToolkitMediaElement() + .ConfigureMauiHandlers(handlers => + { +#if IOS || MACCATALYST + handlers.AddHandler(); + handlers.AddHandler(); +#endif + }) + #if WINDOWS - .UseMauiCommunityToolkitMaps("KEY") // You should add your own key here from bingmapsportal.com + .UseMauiCommunityToolkitMaps("KEY") // You should add your own key here from https://bingmapsportal.com #else .UseMauiMaps() #endif @@ -112,6 +121,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddHttpClient() .AddStandardResilienceHandler(static options => options.Retry = new MobileHttpRetryStrategyOptions()); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); RegisterViewsAndViewModels(builder.Services); @@ -124,6 +134,7 @@ public static MauiApp CreateMauiApp() return builder.Build(); } + [RequiresUnreferencedCode("Calls CommunityToolkit.Maui.Sample.MauiProgram.AddTransientWithShellRoute()")] static void RegisterViewsAndViewModels(in IServiceCollection services) { // Add Gallery Pages + ViewModels diff --git a/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/AlertsGalleryPage.cs b/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/AlertsGalleryPage.cs index fdf18c116f..7e40a465eb 100644 --- a/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/AlertsGalleryPage.cs +++ b/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/AlertsGalleryPage.cs @@ -2,7 +2,7 @@ namespace CommunityToolkit.Maui.Sample.Pages.Alerts; -public class AlertsGalleryPage(IDeviceInfo deviceInfo, AlertsGalleryViewModel alertsGalleryViewModel) : BaseGalleryPage("Alerts", deviceInfo, alertsGalleryViewModel) +public partial class AlertsGalleryPage(IDeviceInfo deviceInfo, AlertsGalleryViewModel alertsGalleryViewModel) : BaseGalleryPage("Alerts", deviceInfo, alertsGalleryViewModel) { } \ No newline at end of file diff --git a/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/SnackbarPage.xaml b/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/SnackbarPage.xaml index da56fa9ba7..e8a00d0720 100644 --- a/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/SnackbarPage.xaml +++ b/samples/CommunityToolkit.Maui.Sample/Pages/Alerts/SnackbarPage.xaml @@ -27,7 +27,7 @@ @@ -30,11 +32,13 @@ diff --git a/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/IconTintColorBehaviorPage.xaml b/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/IconTintColorBehaviorPage.xaml index 47914bbaba..1eb91f8f7a 100644 --- a/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/IconTintColorBehaviorPage.xaml +++ b/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/IconTintColorBehaviorPage.xaml @@ -75,9 +75,12 @@ Grid.Row="4" Grid.Column="1" Command="{Binding ToggleImageButtonCommand, Mode=OneTime}" - Source="{Binding ToggleableImageSource}"> + Source="{Binding ToggleableImageSource}" + x:Name="ToggleImageSourceButton"> - + @@ -85,9 +88,12 @@ Grid.Row="4" Grid.Column="2" Command="{Binding ChangeColorCommand}" - Source="shield.png"> + Source="shield.png" + x:Name="ShieldButton"> - + diff --git a/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/MaxLengthReachedBehaviorPage.xaml b/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/MaxLengthReachedBehaviorPage.xaml index 7509a58804..41aadb5467 100644 --- a/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/MaxLengthReachedBehaviorPage.xaml +++ b/samples/CommunityToolkit.Maui.Sample/Pages/Behaviors/MaxLengthReachedBehaviorPage.xaml @@ -20,8 +20,9 @@ Margin="{StaticResource ContentPadding}" /> - + - +