using System; using System.Collections.Generic; using System.Text; using Avalonia.Controls; using Avalonia.Controls.Presenters; using Avalonia.Controls.Templates; using Avalonia.Styling; using Avalonia.UnitTests; using Xunit; namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions { public class BindingExtensionTests { [Fact] public void BindingExtension_Binds_To_Source() { using (StyledWindow()) { var xaml = @" foobar "; var loader = new AvaloniaXamlLoader(); var window = (Window)loader.Load(xaml); var textBlock = window.FindControl("textBlock"); window.Show(); Assert.Equal("foobar", textBlock.Text); } } private IDisposable StyledWindow(params (string, string)[] assets) { var services = TestServices.StyledWindow.With( assetLoader: new MockAssetLoader(assets), theme: () => new Styles { WindowStyle(), }); return UnitTestApplication.Start(services); } private Style WindowStyle() { return new Style(x => x.OfType()) { Setters = { new Setter( Window.TemplateProperty, new FuncControlTemplate(x => new ContentPresenter { Name = "PART_ContentPresenter", [!ContentPresenter.ContentProperty] = x[!Window.ContentProperty], })) } }; } } }