Browse Source

Accept base TargetType in ItemContainerTheme

pull/12630/head
Steven Kirk 3 years ago
parent
commit
f347eaf711
  1. 2
      src/Avalonia.Controls/ItemsControl.cs
  2. 14
      tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs

2
src/Avalonia.Controls/ItemsControl.cs

@ -667,7 +667,7 @@ namespace Avalonia.Controls
if (itemContainerTheme is null)
container.Theme = null;
else if (GetStyleKey(container) == itemContainerTheme.TargetType)
else if (itemContainerTheme.TargetType?.IsAssignableFrom(GetStyleKey(container)) == true)
container.Theme = itemContainerTheme;
if (item is not Control)

14
tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs

@ -129,6 +129,20 @@ namespace Avalonia.Controls.UnitTests
Assert.Same(container.Theme, theme);
}
[Fact]
public void Container_Should_Have_Theme_Set_To_ItemContainerTheme_With_Base_TargetType()
{
using var app = Start();
var theme = new ControlTheme { TargetType = typeof(Control) };
var target = CreateTarget(
itemsSource: new[] { "Foo" },
itemContainerTheme: theme);
var container = GetContainer(target);
Assert.Same(container.Theme, theme);
}
[Fact]
public void ItemContainerTheme_Can_Be_Changed()
{

Loading…
Cancel
Save