[C] Cascade StyleSheets defined at Application level (#1590)

fixes #1553
This commit is contained in:
Stephane Delcroix 2018-01-17 09:13:13 +01:00 коммит произвёл GitHub
Родитель d46d6fb403
Коммит 5a7cdb081e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 21 добавлений и 2 удалений

Просмотреть файл

@ -17,6 +17,13 @@ namespace Xamarin.Forms.StyleSheets.UnitTests
Internals.Registrar.RegisterAll(new Type[0]);
}
[TearDown]
public void TearDown()
{
Device.PlatformServices = null;
Application.ClearCurrent();
}
[Test]
public void PropertiesAreApplied()
{
@ -78,5 +85,17 @@ namespace Xamarin.Forms.StyleSheets.UnitTests
var layout = new StackLayout();
Assert.That(layout.GetValue(TextElement.TextColorProperty), Is.EqualTo(Color.Default));
}
[Test]
public void StyleSheetsOnAppAreApplied()
{
var app = new MockApplication();
app.Resources.Add(StyleSheet.FromString("label{ color: red;}"));
var page = new ContentPage {
Content = new Label()
};
app.MainPage = page;
Assert.That((page.Content as Label).TextColor, Is.EqualTo(Color.Red));
}
}
}

Просмотреть файл

@ -41,8 +41,8 @@ namespace Xamarin.Forms
return;
var sheets = new List<StyleSheet>();
while (parent != null) {
var visualParent = parent as VisualElement;
var vpSheets = visualParent?.GetStyleSheets();
var resourceProvider = parent as IResourcesProvider;
var vpSheets = resourceProvider?.GetStyleSheets();
if (vpSheets != null)
sheets.AddRange(vpSheets);
parent = parent.Parent;