c# - 从另一个类而不是新创建的 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
,当我调用该类时RestoreAfterEditClose
,main.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;
}
解决方案
您在新窗口上调用 RestoreAfterEditClose。如果你想在另一个窗口上做,你必须在那里调用它。
((MainWindow)Application.Current.MainWindow)
您可以使用或通过获取控件的父窗口来访问当前主窗口: Window.GetWindow(this)
。
推荐阅读
- android - 如何在 recyclerview 中使用片段?
- strapi - 如何使用生命周期回调将 Strapi 与 SSG 集成?
- php - soap xml response - how to get that stubborn data out
- spring-boot - 在 Spring Actuator (CacheManager) 中注册 Caffeine Cache
- python - Spotipy.User_playlist 抛出错误:有多个请求的错误请求
- sharepoint - AADSTS90102:“redirect_uri”值必须是有效的绝对 Uri。- SharePoint 页面上嵌入的 yammer 问题
- regex - 删除文本编辑器中的功能,保留参数
- python-2.7 - ImportError:运行 Google Dataflow 工作程序时没有名为 idlelib 的模块
- bokeh - How to achieve a responsive dashboard layout?
- sql-server - 为什么 LEN( char(32) ) = 0 在 T-SQL 中?