首页 > 解决方案 > 从另一个类而不是新创建的 C# WPF 更新 Window 的当前实例

问题描述

我正在尝试在 Window 的当前实例上使用 BeginAnimation,但没有发生任何事情,因为它使用了我刚刚创建的实例。

我已经阅读了使用 DataContext 的其他答案,但这些答案的目标是访问文本框的属性,我认为它不适用于这里。

编辑Sql.xaml.cs

    {
        MainWindow main = new MainWindow();
        e.Cancel = true;
        Application.Current.MainWindow.Visibility = Visibility.Hidden;
        main.RestoreAfterEditClose();
    }

主窗口.xaml.cs

    public void RestoreAfterEditClose()
    {
        Grid2.BeginAnimation(OpacityProperty, instant1);    // not working
        this.ManageGrid.BeginAnimation(OpacityProperty, instant1);   // not working
        Create_A_Visit.Foreground = Brushes.Red; // not working
    }

主窗口.xaml.cs

我知道问题是它在新创建main的而不是当前实例上启动动画,但不知道如何修复。这可能是面包和黄油的东西,但最好能很好地理解它是如何工作的。

编辑

问题是这样的,因为我正在创建一个名为 MainWindow 的新实例main,当我调用该类时RestoreAfterEditClosemain.RestoreAfterEditClose()它不会对我以前隐藏的 MainWindow 生效(显然,我已经通过执行 main.Show() 证明了这一点,并看到更改在那里生效)。

试图澄清我正在尝试做的事情。我正在尝试找到一种方法来RestoreAfterEditClose从不同的类调用我当前的 MainWindow 实例,但我不知道如何。

问题:有没有在不创建 MainWindow 的新实例的情况下调用另一个类的方法?

完整方法

编辑Sql.xaml.cs

    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        MainWindow main = new MainWindow();
        main.Show();
        main.RestoreAfterEditClose();
        e.Cancel = true;
        Application.Current.MainWindow.Visibility = Visibility.Hidden;         
    }

标签: c#wpf

解决方案


您在新窗口上调用 RestoreAfterEditClose。如果你想在另一个窗口上做,你必须在那里调用它。

((MainWindow)Application.Current.MainWindow)您可以使用或通过获取控件的父窗口来访问当前主窗口: Window.GetWindow(this)


推荐阅读