From ecda58fc8ea75a066975ea0e853269e0bf025ab1 Mon Sep 17 00:00:00 2001 From: Takoooooo Date: Wed, 19 Jan 2022 12:44:45 +0200 Subject: [PATCH] Fix InvalidCastException when opening a dialog. --- src/Avalonia.Controls/ValidatingToplevel.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/ValidatingToplevel.cs b/src/Avalonia.Controls/ValidatingToplevel.cs index 97792a9c87..d1edd28ebc 100644 --- a/src/Avalonia.Controls/ValidatingToplevel.cs +++ b/src/Avalonia.Controls/ValidatingToplevel.cs @@ -236,7 +236,18 @@ internal class ValidatingWindowImpl : ValidatingWindowBaseImpl, IWindowImpl public void SetTitle(string title) => Inner.SetTitle(title); - public void SetParent(IWindowImpl parent) => Inner.SetParent(parent); + public void SetParent(IWindowImpl parent) + { + //Workaround. SetParent will cast IWindowImpl to WindowImpl but ValidatingWindowImpl isn't actual WindowImpl so it will fail with InvalidCastException. + if (parent is ValidatingWindowImpl validatingToplevelImpl) + { + Inner.SetParent(validatingToplevelImpl.Inner); + } + else + { + Inner.SetParent(parent); + } + } public void SetEnabled(bool enable) => Inner.SetEnabled(enable); @@ -323,4 +334,4 @@ internal class ValidatingPopupImpl : ValidatingWindowBaseImpl, IPopupImpl public IPopupPositioner PopupPositioner => Inner.PopupPositioner; public void SetWindowManagerAddShadowHint(bool enabled) => Inner.SetWindowManagerAddShadowHint(enabled); -} \ No newline at end of file +}