-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[C] Propagate resources when reparenting
- fixes a bug when the theme is changed while the control/page isn't parented. Should fix @LeDahu22 reported issue of #21744
- Loading branch information
1 parent
df8aa54
commit 5c93b56
Showing
4 changed files
with
84 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" | ||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | ||
x:Class="Microsoft.Maui.Controls.Xaml.UnitTests.Maui21774"> | ||
<StackLayout> | ||
<Label x:Name="label0" TextColor="{DynamicResource labelColor}"/> | ||
<Label x:Name="label1" TextColor="{AppThemeBinding Light=LimeGreen, Dark=HotPink}"/> | ||
</StackLayout> | ||
</ContentPage> |
69 changes: 69 additions & 0 deletions
69
src/Controls/tests/Xaml.UnitTests/Issues/Maui21774.xaml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Diagnostics; | ||
using System.Globalization; | ||
using System.Linq; | ||
using System.Threading.Tasks; | ||
using Microsoft.Maui.ApplicationModel; | ||
using Microsoft.Maui.Controls.Core.UnitTests; | ||
using Microsoft.Maui.Controls.Shapes; | ||
using Microsoft.Maui.Devices; | ||
using Microsoft.Maui.Dispatching; | ||
|
||
using Microsoft.Maui.Graphics; | ||
using Microsoft.Maui.UnitTests; | ||
using NUnit.Framework; | ||
|
||
namespace Microsoft.Maui.Controls.Xaml.UnitTests; | ||
|
||
public partial class Maui21774 | ||
{ | ||
public Maui21774() | ||
{ | ||
InitializeComponent(); | ||
} | ||
|
||
public Maui21774(bool useCompiledXaml) | ||
{ | ||
//this stub will be replaced at compile time | ||
} | ||
|
||
[TestFixture] | ||
class Test | ||
{ | ||
[SetUp] | ||
public void Setup() | ||
{ | ||
Application.SetCurrentApplication(new MockApplication()); | ||
DispatcherProvider.SetCurrent(new DispatcherProviderStub()); | ||
} | ||
|
||
[TearDown] public void TearDown() => AppInfo.SetCurrent(null); | ||
|
||
[Test] | ||
public void AppThemeChangeOnUnparentedPage([Values(false, true)] bool useCompiledXaml) | ||
{ | ||
Application.Current.Resources.Add("labelColor", Colors.LimeGreen); | ||
Application.Current.UserAppTheme = AppTheme.Light; | ||
var page = new Maui21774(useCompiledXaml); | ||
Application.Current.MainPage = page; | ||
|
||
Assert.That(page.label0.TextColor, Is.EqualTo(Colors.LimeGreen)); | ||
Assert.That(page.label1.TextColor, Is.EqualTo(Colors.LimeGreen)); | ||
|
||
//unparent the page, change the resource and the theme | ||
Application.Current.MainPage = null; | ||
Application.Current.Resources["labelColor"] = Colors.HotPink; | ||
Application.Current.UserAppTheme = AppTheme.Dark; | ||
//labels should not change | ||
Assert.That(page.label0.TextColor, Is.EqualTo(Colors.LimeGreen)); | ||
Assert.That(page.label1.TextColor, Is.EqualTo(Colors.LimeGreen)); | ||
|
||
//reparent the page | ||
Application.Current.MainPage = page; | ||
//labels should change | ||
Assert.That(page.label0.TextColor, Is.EqualTo(Colors.HotPink)); | ||
Assert.That(page.label1.TextColor, Is.EqualTo(Colors.HotPink)); | ||
} | ||
} | ||
} |