从MainWindow访问类的实例

时间:2013-04-03 21:46:49

标签: c# .net wpf mvvm

我有一个使用MainWindow的应用程序和另一个名为MyClass的类。 MyClass有一个方法,我需要从MainWindow类访问。应用程序加载时会加载MyClass。如何在不创建MyClass的新实例的情况下从MainWindow调用MyClass中的方法:

MyClass class = new MyClass();

2 个答案:

答案 0 :(得分:2)

您问题的直接答案是将类方法标记为静态。这样你就可以从任何地方调用它。

另一方面,它可能不是你真正需要的。因此,如果在Application类中的应用程序启动时创建MyClass,则需要通过应用程序属性公开MyClass实例。查看示例代码。

public class MyClass
{
    public void Method()
    {
        // ...
    }
}

您的应用代码:

public partial class App
{
    public MyClass MyClassInstance { get; private set; }

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        MyClassInstance = new MyClass();
    }
}

您调用班级方法的窗口代码:

public partial class MainWindow : Window
{
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ((App)Application.Current).MyClassInstance.Method();
    }
}

答案 1 :(得分:0)

听起来非常可疑,但你通过制作这种方法static

来做你所说的话
public partial class MainWindow
{
    public void MethodInMainWindow()
    {
        // Don't need to create a new instance of MyClass
        MyClass.MethodInMyClass();
    }
}

public class MyClass
{
    public static void MethodInMyClass()
    {
        //  ....
    }
}

Here is a little bit of documentation on static vs instance