diff --git a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs index c49797f2f8..0419db5d0f 100644 --- a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs +++ b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs @@ -189,7 +189,7 @@ namespace Avalonia.Markup.Xaml context); XamlServices.Transform(reader, writer); - + writer.ApplyAllDelayedProperties(); return writer.Result; } diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs index 860dbfec39..e0e2553f46 100644 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs @@ -54,6 +54,12 @@ namespace Avalonia.Markup.Xaml.PortableXaml base.Dispose(disposing); } + public void ApplyAllDelayedProperties() + { + //HACK: We need this because Begin/EndInit ordering is broken + _delayedValuesHelper.ApplyAll(); + } + protected internal override void OnAfterBeginInit(object value) { //not called for avalonia objects @@ -137,7 +143,7 @@ namespace Avalonia.Markup.Xaml.PortableXaml if (_cnt == 0) { - EndInit(); + ApplyAll(); } } @@ -174,7 +180,7 @@ namespace Avalonia.Markup.Xaml.PortableXaml } } - private void EndInit() + public void ApplyAll() { //TODO: revisit this //apply delayed values and clear