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
- latestenable
- enableNETSDK1023
- true
- true
- false
+ net9.0
+ preview
+ enabletrue
+ truetrue
+ false
+
+
+ enable
+ all
+
+
+ 9.0.21
+ 10.0.0
+ true
+ true
+ truefalse
@@ -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.53true
+
+
+ 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.06.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 @@
+ TextColor="{Binding Source={RelativeSource Self}, Path=BackgroundColor, Converter={StaticResource ColorToColorForTextConverter}, x:DataType=Button}"/>