Browse Source

Merge pull request #11495 from AvaloniaUI/refactor/remove-presenter-interfaces

Remove presenter interfaces
pull/11498/head
Max Katz 3 years ago
committed by GitHub
parent
commit
b2b908c6e8
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      src/Avalonia.Controls/ContentControl.cs
  2. 2
      src/Avalonia.Controls/Presenters/ContentPresenter.cs
  3. 23
      src/Avalonia.Controls/Presenters/IContentPresenter.cs
  4. 4
      src/Avalonia.Controls/Presenters/IContentPresenterHost.cs
  5. 20
      src/Avalonia.Controls/Presenters/IPresenter.cs
  6. 2
      src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs
  7. 4
      src/Avalonia.Controls/Primitives/HeaderedContentControl.cs
  8. 8
      src/Avalonia.Controls/Primitives/HeaderedItemsControl.cs
  9. 8
      src/Avalonia.Controls/Primitives/HeaderedSelectingItemsControl.cs
  10. 2
      src/Avalonia.Controls/Primitives/IPopupHost.cs
  11. 2
      src/Avalonia.Controls/ScrollViewer.cs
  12. 2
      src/Avalonia.Controls/SplitView/SplitView.cs
  13. 8
      src/Avalonia.Controls/TabControl.cs
  14. 6
      src/Avalonia.Controls/ToggleSwitch.cs
  15. 2
      src/Avalonia.Controls/TransitioningContentControl.cs
  16. 36
      tests/Avalonia.Controls.UnitTests/ContentControlTests.cs
  17. 2
      tests/Avalonia.Controls.UnitTests/HeaderedItemsControlTests .cs
  18. 2
      tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs
  19. 2
      tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests_InTemplate.cs
  20. 16
      tests/Avalonia.Controls.UnitTests/TabControlTests.cs
  21. 8
      tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs
  22. 12
      tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ControlTemplateTests.cs
  23. 14
      tests/Avalonia.Markup.Xaml.UnitTests/Xaml/DataTemplateTests.cs
  24. 2
      tests/Avalonia.ReactiveUI.UnitTests/TransitioningContentControlTest.cs
  25. 13
      tests/Avalonia.UnitTests/TestExtensions.cs

10
src/Avalonia.Controls/ContentControl.cs

@ -13,7 +13,7 @@ namespace Avalonia.Controls
/// <summary>
/// Displays <see cref="Content"/> according to an <see cref="IDataTemplate"/>.
/// </summary>
[TemplatePart("PART_ContentPresenter", typeof(IContentPresenter))]
[TemplatePart("PART_ContentPresenter", typeof(ContentPresenter))]
public class ContentControl : TemplatedControl, IContentControl, IContentPresenterHost
{
/// <summary>
@ -68,7 +68,7 @@ namespace Avalonia.Controls
/// <summary>
/// Gets the presenter from the control's template.
/// </summary>
public IContentPresenter? Presenter
public ContentPresenter? Presenter
{
get;
private set;
@ -96,16 +96,16 @@ namespace Avalonia.Controls
IAvaloniaList<ILogical> IContentPresenterHost.LogicalChildren => LogicalChildren;
/// <inheritdoc/>
bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter)
bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter)
{
return RegisterContentPresenter(presenter);
}
/// <summary>
/// Called when an <see cref="IContentPresenter"/> is registered with the control.
/// Called when an <see cref="ContentPresenter"/> is registered with the control.
/// </summary>
/// <param name="presenter">The presenter.</param>
protected virtual bool RegisterContentPresenter(IContentPresenter presenter)
protected virtual bool RegisterContentPresenter(ContentPresenter presenter)
{
if (presenter.Name == "PART_ContentPresenter")
{

2
src/Avalonia.Controls/Presenters/ContentPresenter.cs

@ -17,7 +17,7 @@ namespace Avalonia.Controls.Presenters
/// Presents a single item of data inside a <see cref="TemplatedControl"/> template.
/// </summary>
[PseudoClasses(":empty")]
public class ContentPresenter : Control, IContentPresenter
public class ContentPresenter : Control
{
/// <summary>
/// Defines the <see cref="Background"/> property.

23
src/Avalonia.Controls/Presenters/IContentPresenter.cs

@ -1,23 +0,0 @@
using Avalonia.Controls.Primitives;
using Avalonia.Metadata;
namespace Avalonia.Controls.Presenters
{
/// <summary>
/// Interface for controls that present a single item of data inside a
/// <see cref="TemplatedControl"/> template.
/// </summary>
[NotClientImplementable]
public interface IContentPresenter : IPresenter
{
/// <summary>
/// Gets the control displayed by the presenter.
/// </summary>
Control? Child { get; }
/// <summary>
/// Gets or sets the content to be displayed by the presenter.
/// </summary>
object? Content { get; set; }
}
}

4
src/Avalonia.Controls/Presenters/IContentPresenterHost.cs

@ -22,13 +22,13 @@ namespace Avalonia.Controls.Presenters
IAvaloniaList<ILogical> LogicalChildren { get; }
/// <summary>
/// Registers an <see cref="IContentPresenter"/> with a host control.
/// Registers an <see cref="ContentPresenter"/> with a host control.
/// </summary>
/// <param name="presenter">The content presenter.</param>
/// <returns>
/// True if the content presenter should add its child to the logical children of the
/// host; otherwise false.
/// </returns>
bool RegisterContentPresenter(IContentPresenter presenter);
bool RegisterContentPresenter(ContentPresenter presenter);
}
}

20
src/Avalonia.Controls/Presenters/IPresenter.cs

@ -1,20 +0,0 @@
using Avalonia.Controls.Primitives;
using Avalonia.Metadata;
namespace Avalonia.Controls.Presenters
{
/// <summary>
/// Interface for presenters such as <see cref="ContentPresenter"/> and
/// <see cref="ItemsPresenter"/>.
/// </summary>
/// <remarks>
/// A presenter is the gateway between a templated control and its content. When
/// a control which implements <see cref="IPresenter"/> is found in the template
/// of a <see cref="TemplatedControl"/> then that signals that the visual child
/// of the presenter is not a part of the template.
/// </remarks>
[NotClientImplementable]
public interface IPresenter : INamed
{
}
}

2
src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs

@ -13,7 +13,7 @@ namespace Avalonia.Controls.Presenters
/// <summary>
/// Presents a scrolling view of content inside a <see cref="ScrollViewer"/>.
/// </summary>
public class ScrollContentPresenter : ContentPresenter, IPresenter, IScrollable, IScrollAnchorProvider
public class ScrollContentPresenter : ContentPresenter, IScrollable, IScrollAnchorProvider
{
private const double EdgeDetectionTolerance = 0.1;

4
src/Avalonia.Controls/Primitives/HeaderedContentControl.cs

@ -41,7 +41,7 @@ namespace Avalonia.Controls.Primitives
/// <summary>
/// Gets the header presenter from the control's template.
/// </summary>
public IContentPresenter? HeaderPresenter
public ContentPresenter? HeaderPresenter
{
get;
private set;
@ -57,7 +57,7 @@ namespace Avalonia.Controls.Primitives
}
/// <inheritdoc/>
protected override bool RegisterContentPresenter(IContentPresenter presenter)
protected override bool RegisterContentPresenter(ContentPresenter presenter)
{
var result = base.RegisterContentPresenter(presenter);

8
src/Avalonia.Controls/Primitives/HeaderedItemsControl.cs

@ -56,7 +56,7 @@ namespace Avalonia.Controls.Primitives
/// <summary>
/// Gets the header presenter from the control's template.
/// </summary>
public IContentPresenter? HeaderPresenter
public ContentPresenter? HeaderPresenter
{
get;
private set;
@ -77,16 +77,16 @@ namespace Avalonia.Controls.Primitives
}
/// <inheritdoc/>
bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter)
bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter)
{
return RegisterContentPresenter(presenter);
}
/// <summary>
/// Called when an <see cref="IContentPresenter"/> is registered with the control.
/// Called when an <see cref="ContentPresenter"/> is registered with the control.
/// </summary>
/// <param name="presenter">The presenter.</param>
protected virtual bool RegisterContentPresenter(IContentPresenter presenter)
protected virtual bool RegisterContentPresenter(ContentPresenter presenter)
{
if (presenter.Name == "PART_HeaderPresenter")
{

8
src/Avalonia.Controls/Primitives/HeaderedSelectingItemsControl.cs

@ -56,7 +56,7 @@ namespace Avalonia.Controls.Primitives
/// <summary>
/// Gets the header presenter from the control's template.
/// </summary>
public IContentPresenter? HeaderPresenter
public ContentPresenter? HeaderPresenter
{
get;
private set;
@ -66,7 +66,7 @@ namespace Avalonia.Controls.Primitives
IAvaloniaList<ILogical> IContentPresenterHost.LogicalChildren => LogicalChildren;
/// <inheritdoc/>
bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter)
bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter)
{
return RegisterContentPresenter(presenter);
}
@ -83,10 +83,10 @@ namespace Avalonia.Controls.Primitives
}
/// <summary>
/// Called when an <see cref="IContentPresenter"/> is registered with the control.
/// Called when an <see cref="ContentPresenter"/> is registered with the control.
/// </summary>
/// <param name="presenter">The presenter.</param>
protected virtual bool RegisterContentPresenter(IContentPresenter presenter)
protected virtual bool RegisterContentPresenter(ContentPresenter presenter)
{
if (presenter.Name == "PART_HeaderPresenter")
{

2
src/Avalonia.Controls/Primitives/IPopupHost.cs

@ -52,7 +52,7 @@ namespace Avalonia.Controls.Primitives
/// <summary>
/// Gets the presenter from the control's template.
/// </summary>
IContentPresenter? Presenter { get; }
ContentPresenter? Presenter { get; }
/// <summary>
/// Gets or sets whether the popup appears on top of all other windows.

2
src/Avalonia.Controls/ScrollViewer.cs

@ -644,7 +644,7 @@ namespace Avalonia.Controls
(Presenter as IScrollAnchorProvider)?.UnregisterAnchorCandidate(element);
}
protected override bool RegisterContentPresenter(IContentPresenter presenter)
protected override bool RegisterContentPresenter(ContentPresenter presenter)
{
_childSubscription?.Dispose();
_childSubscription = null;

2
src/Avalonia.Controls/SplitView/SplitView.cs

@ -279,7 +279,7 @@ namespace Avalonia.Controls
remove => RemoveHandler(PaneOpeningEvent, value);
}
protected override bool RegisterContentPresenter(IContentPresenter presenter)
protected override bool RegisterContentPresenter(ContentPresenter presenter)
{
var result = base.RegisterContentPresenter(presenter);

8
src/Avalonia.Controls/TabControl.cs

@ -140,13 +140,13 @@ namespace Avalonia.Controls
internal ItemsPresenter? ItemsPresenterPart { get; private set; }
internal IContentPresenter? ContentPart { get; private set; }
internal ContentPresenter? ContentPart { get; private set; }
/// <inheritdoc/>
IAvaloniaList<ILogical> IContentPresenterHost.LogicalChildren => LogicalChildren;
/// <inheritdoc/>
bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter)
bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter)
{
return RegisterContentPresenter(presenter);
}
@ -210,10 +210,10 @@ namespace Avalonia.Controls
}
/// <summary>
/// Called when an <see cref="IContentPresenter"/> is registered with the control.
/// Called when an <see cref="ContentPresenter"/> is registered with the control.
/// </summary>
/// <param name="presenter">The presenter.</param>
protected virtual bool RegisterContentPresenter(IContentPresenter presenter)
protected virtual bool RegisterContentPresenter(ContentPresenter presenter)
{
if (presenter.Name == "PART_SelectedContentHost")
{

6
src/Avalonia.Controls/ToggleSwitch.cs

@ -86,13 +86,13 @@ namespace Avalonia.Controls
set { SetValue(OffContentProperty, value); }
}
public IContentPresenter? OffContentPresenter
public ContentPresenter? OffContentPresenter
{
get;
private set;
}
public IContentPresenter? OnContentPresenter
public ContentPresenter? OnContentPresenter
{
get;
private set;
@ -142,7 +142,7 @@ namespace Avalonia.Controls
}
}
protected override bool RegisterContentPresenter(IContentPresenter presenter)
protected override bool RegisterContentPresenter(ContentPresenter presenter)
{
var result = base.RegisterContentPresenter(presenter);

2
src/Avalonia.Controls/TransitioningContentControl.cs

@ -71,7 +71,7 @@ public class TransitioningContentControl : ContentControl
return result;
}
protected override bool RegisterContentPresenter(IContentPresenter presenter)
protected override bool RegisterContentPresenter(ContentPresenter presenter)
{
if (!base.RegisterContentPresenter(presenter) &&
presenter is ContentPresenter p &&

36
tests/Avalonia.Controls.UnitTests/ContentControlTests.cs

@ -24,9 +24,9 @@ namespace Avalonia.Controls.UnitTests
target.Content = "Foo";
target.Template = GetTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var child = ((Visual)target).VisualChildren.Single();
var child = target.VisualChildren.Single();
Assert.IsType<Border>(child);
child = child.VisualChildren.Single();
Assert.IsType<ContentPresenter>(child);
@ -55,7 +55,7 @@ namespace Avalonia.Controls.UnitTests
root.Child = target;
target.ApplyTemplate();
((Control)target.Presenter).ApplyTemplate();
target.Presenter.ApplyTemplate();
foreach (Control child in target.GetTemplateChildren())
Assert.Equal("foo", child.Tag);
@ -70,7 +70,7 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = child;
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var contentPresenter = child.GetVisualParent<ContentPresenter>();
Assert.Equal(target, contentPresenter.TemplatedParent);
@ -85,7 +85,7 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = child;
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Null(child.TemplatedParent);
}
@ -117,7 +117,7 @@ namespace Avalonia.Controls.UnitTests
var child = new Control();
target.Content = child;
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal(child.Parent, target);
Assert.Equal(child.GetLogicalParent(), target);
@ -135,7 +135,7 @@ namespace Avalonia.Controls.UnitTests
target.Content = "Foo";
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var child = target.Presenter.Child;
@ -152,7 +152,7 @@ namespace Avalonia.Controls.UnitTests
target.Content = "Foo";
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var child = target.Presenter.Child;
@ -192,7 +192,7 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = child;
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.True(called);
}
@ -207,12 +207,12 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = child;
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = true;
target.Content = null;
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.True(called);
}
@ -228,12 +228,12 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = child1;
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = true;
target.Content = child2;
((Control)target.Presenter).ApplyTemplate();
target.Presenter.ApplyTemplate();
Assert.True(called);
}
@ -245,13 +245,13 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
target.Content = "Foo";
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal("Foo", ((TextBlock)target.Presenter.Child).Text);
target.Content = "Bar";
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal("Bar", ((TextBlock)target.Presenter.Child).Text);
}
@ -263,7 +263,7 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = "Foo";
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal("Foo", target.Presenter.Child.DataContext);
}
@ -276,7 +276,7 @@ namespace Avalonia.Controls.UnitTests
target.Template = GetTemplate();
target.Content = new TextBlock();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Null(target.Presenter.Child.DataContext);
}

2
tests/Avalonia.Controls.UnitTests/HeaderedItemsControlTests .cs

@ -34,7 +34,7 @@ namespace Avalonia.Controls.UnitTests
target.Header = "Foo";
target.ApplyTemplate();
((ContentPresenter)target.HeaderPresenter).UpdateChild();
target.HeaderPresenter.UpdateChild();
var child = target.HeaderPresenter.Child;

2
tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs

@ -305,7 +305,7 @@ namespace Avalonia.Controls.UnitTests
scrollViewer.ApplyTemplate();
// Then make the ScrollViewer create its child.
((ContentPresenter)scrollViewer.Presenter).UpdateChild();
scrollViewer.Presenter.UpdateChild();
// Now the ItemsPresenter should be reigstered, so apply its template.
target.Presenter.ApplyTemplate();

2
tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests_InTemplate.cs

@ -391,7 +391,7 @@ namespace Avalonia.Controls.UnitTests.Presenters
templatedParent.ApplyTemplate();
return ((ContentPresenter)templatedParent.Presenter, templatedParent);
return (templatedParent.Presenter, templatedParent);
}
private class TestContentControl : ContentControl, IContentPresenterHost

16
tests/Avalonia.Controls.UnitTests/TabControlTests.cs

@ -272,28 +272,28 @@ namespace Avalonia.Controls.UnitTests
ApplyTemplate(target);
((ContentPresenter)target.ContentPart).UpdateChild();
target.ContentPart.UpdateChild();
var dataContext = ((TextBlock)target.ContentPart.Child).DataContext;
Assert.Equal(items[0], dataContext);
target.SelectedIndex = 1;
((ContentPresenter)target.ContentPart).UpdateChild();
target.ContentPart.UpdateChild();
dataContext = ((Button)target.ContentPart.Child).DataContext;
Assert.Equal(items[1], dataContext);
target.SelectedIndex = 2;
((ContentPresenter)target.ContentPart).UpdateChild();
target.ContentPart.UpdateChild();
dataContext = ((TextBlock)target.ContentPart.Child).DataContext;
Assert.Equal("Base", dataContext);
target.SelectedIndex = 3;
((ContentPresenter)target.ContentPart).UpdateChild();
target.ContentPart.UpdateChild();
dataContext = ((TextBlock)target.ContentPart.Child).DataContext;
Assert.Equal("Qux", dataContext);
target.SelectedIndex = 4;
((ContentPresenter)target.ContentPart).UpdateChild();
dataContext = ((Control)target.ContentPart).DataContext;
target.ContentPart.UpdateChild();
dataContext = target.ContentPart.DataContext;
Assert.Equal("Base", dataContext);
}
@ -367,7 +367,7 @@ namespace Avalonia.Controls.UnitTests
var root = new TestRoot(target);
ApplyTemplate(target);
((ContentPresenter)target.ContentPart).UpdateChild();
target.ContentPart.UpdateChild();
var content = Assert.IsType<TextBlock>(target.ContentPart.Child);
Assert.Equal("bar", content.Tag);
@ -608,7 +608,7 @@ namespace Avalonia.Controls.UnitTests
tabItem.ApplyTemplate();
((ContentPresenter)tabItem.Presenter).UpdateChild();
tabItem.Presenter.UpdateChild();
}
target.ContentPart.ApplyTemplate();

8
tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs

@ -472,7 +472,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text);
}
@ -694,7 +694,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text);
}
@ -727,7 +727,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text);
}
@ -760,7 +760,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal(dataContext.StringProperty, ((TextBlock)target.Presenter.Child).Text);
}

12
tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ControlTemplateTests.cs

@ -74,7 +74,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
button.ApplyTemplate();
var presenter = (ContentPresenter)button.Presenter;
var presenter = button.Presenter;
Assert.Equal(Brushes.Red, presenter.Background);
var diagnostic = presenter.GetDiagnostic(Button.BackgroundProperty);
@ -108,7 +108,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
button.ApplyTemplate();
var presenter = (ContentPresenter)button.Presenter;
var presenter = button.Presenter;
Assert.Equal(Brushes.Red, presenter.Background);
var diagnostic = presenter.GetDiagnostic(Button.BackgroundProperty);
@ -139,7 +139,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
button.ApplyTemplate();
var presenter = (ContentPresenter)button.Presenter;
var presenter = button.Presenter;
Assert.Equal(Dock.Top, DockPanel.GetDock(presenter));
var diagnostic = presenter.GetDiagnostic(DockPanel.DockProperty);
@ -173,7 +173,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
button.ApplyTemplate();
var presenter = (ContentPresenter)button.Presenter;
var presenter = button.Presenter;
Assert.Equal(Brushes.Red, presenter.Background);
var diagnostic = presenter.GetDiagnostic(Button.BackgroundProperty);
@ -207,7 +207,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
button.ApplyTemplate();
var presenter = (ContentPresenter)button.Presenter;
var presenter = button.Presenter;
Assert.Equal(Brushes.Red, presenter.Background);
var diagnostic = presenter.GetDiagnostic(Button.BackgroundProperty);
@ -238,7 +238,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
button.ApplyTemplate();
var presenter = (ContentPresenter)button.Presenter;
var presenter = button.Presenter;
Assert.Equal("Foo", presenter.Content);
var diagnostic = presenter.GetDiagnostic(ContentPresenter.ContentProperty);

14
tests/Avalonia.Markup.Xaml.UnitTests/Xaml/DataTemplateTests.cs

@ -32,7 +32,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Null(target.Presenter.Child);
}
@ -59,7 +59,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.IsType<Canvas>(target.Presenter.Child);
}
@ -117,7 +117,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.Equal(typeof(string), template.DataType);
Assert.IsType<Canvas>(target.Presenter.Child);
@ -145,7 +145,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
Assert.IsType<Canvas>(target.Presenter.Child);
}
@ -175,7 +175,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var dataTemplate = (CustomDataTemplate)target.ContentTemplate;
Assert.Null(dataTemplate.FancyDataType);
@ -217,11 +217,11 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
window.ApplyTemplate();
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var canvas = (Canvas)target.Presenter.Child;
Assert.Same(viewModel, target.DataContext);
Assert.Same(viewModel.Child, ((Control)target.Presenter).DataContext);
Assert.Same(viewModel.Child, target.Presenter.DataContext);
Assert.Same(viewModel.Child.Child, canvas.DataContext);
}
}

2
tests/Avalonia.ReactiveUI.UnitTests/TransitioningContentControlTest.cs

@ -22,7 +22,7 @@ namespace Avalonia.ReactiveUI.UnitTests
Content = "Foo"
};
target.ApplyTemplate();
((ContentPresenter)target.Presenter).UpdateChild();
target.Presenter.UpdateChild();
var child = ((Visual)target).GetVisualChildren().Single();
Assert.IsType<Border>(child);

13
tests/Avalonia.UnitTests/TestExtensions.cs

@ -1,13 +0,0 @@
using System;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Layout;
using Avalonia.Styling;
namespace Avalonia.UnitTests
{
public static class TestExtensions
{
public static void ApplyTemplate(this IContentPresenter presenter) => ((Layoutable)presenter).ApplyTemplate();
}
}
Loading…
Cancel
Save