From d135663062218fb3e230f1902dc2ef15659dbff7 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 23 Jul 2017 22:40:45 +0300 Subject: [PATCH] Hack to fix Begin/EndInit bug caused by DelayedValuesHelper --- .../AvaloniaXamlLoaderPortableXaml.cs | 2 +- .../PortableXaml/AvaloniaXamlObjectWriter.cs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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