【发布时间】:2019-09-02 10:05:30
【问题描述】:
我正在尝试在 Window 的当前实例上使用 BeginAnimation,但什么也没发生,因为它使用的是我刚刚创建的实例。
我已经阅读了使用 DataContext 的其他答案,但这些答案的目标是访问文本框的属性,我认为它不适用于这里。
EditSql.xaml.cs
{
MainWindow main = new MainWindow();
e.Cancel = true;
Application.Current.MainWindow.Visibility = Visibility.Hidden;
main.RestoreAfterEditClose();
}
MainWindow.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
}
MainWindow.xaml.cs
我知道问题是它在新创建的 main 而不是当前实例上启动动画,但不知道如何修复。这可能是面包和黄油的东西,但最好能很好地了解它的工作原理。
编辑
问题是这样的,因为我正在创建一个名为 main 的新 MainWindow 实例,当我将 RestoreAfterEditClose 类称为 main.RestoreAfterEditClose()时,它不会对我以前隐藏的 MainWindow 生效(显然,我'已经通过执行 main.Show() 证明了这一点,并看到更改在那里生效)。
尝试澄清我正在尝试做的事情。我正在尝试找到一种方法在我当前的 MainWindow 实例上从另一个类调用 RestoreAfterEditClose,但我不知道如何。
问题:有没有在不创建 MainWindow 的新实例的情况下调用另一个类的方法?
完整方法
EditSql.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;
}
【问题讨论】:
-
您的
MainWindow。仍然是Hidden。必须是Visible才能看到Opacity的变化。 -
不清楚你在做什么。您必须调用
main.Show()才能使新实例可见。 -
什么是
instant1?请提供完整的上下文。不要在这里开始智力竞赛。 -
@BionicCode 我添加了一个编辑。
instant1只是将不透明度更改为 1。