如何将当前对象上的方法调用到另一个类?

时间:2014-01-30 00:37:10

标签: c# wpf xaml

如何调用Zamkniecie()文件Window1.cs而不是我在方法Window_Closed()中显示的新对象,但是您正在使用文件MainWindow.cs的对象? 方法的组件Zamkniecie()已在MainWindow.xaml文件中创建

    File: Window1.cs 
    namespace AllSportsBets102
    {    
        public partial class Window1 : Window
        {
            public Window1(DataGrid zdg, List<Data2> dsx)
            {
                InitializeComponent();
            }
            private void Window_Closed(object sender, EventArgs e)
            {
                MainWindow mw = new MainWindow();
                mw.Zamkniecie();
            }
        }
    }

    File: MainWindow.cs
    namespace AllSportsBets102
    {
        public partial class MainWindow : Window
        {
              public MainWindow()
              {
                  InitializeComponent();
              }
              public void Zamkniecie()
              {
                    InfoStackPanel.IsEnabled = true;
                    KuponStackPanel1.IsEnabled = true;
                    KuponStackPanel2.IsEnabled = true;
                    FiltrStackPanel.IsEnabled = true;
                    WszystkieZdarzeniaStackPanel1.IsEnabled = true;
                    WszystkieZdarzeniaStackPanel2.IsEnabled = true;
                    KuponLabel.IsEnabled = true;
                    WszystkieLabel.IsEnabled = true;
                    InfoLabel.IsEnabled = true;
                    StackPanel1Copy.IsEnabled = true;
                    StackPanel2Copy.IsEnabled = true;  
               }
        }
    }

2 个答案:

答案 0 :(得分:1)

以下是一些选项:

  1. 为Window1提供对MainWindow的引用,以便它可以调用Zamkniecie方法。
  2. 使Zamkniecie方法静止。
  3. 将Zamkniecie方法移动到Window1。
  4. 如果只有一个MainWindow实例,请将MainWindow实现为单例,这样您就可以从任何地方访问它。
  5. 如果MainWindow实例化Window1,则从在MainWindow上处理的Window1引发一个事件。
  6. 如果MainWindow没有实例化Window1,请实现观察者模式。
  7. 我更喜欢选项5,如果可能的话,因为它更接近每个类自我管理。如果您只想在Window1关闭时调用Zamkniecie,您应该能够从MainWindow识别出来。以下是MainWindow中的代码片段:

    Window1 window1 = new Window1();
    window1.ShowDialog();
    Zamkniecie();
    

    注意:这些类所在的文件没有区别,只要它们位于同一名称空间中即可。

答案 1 :(得分:0)

我知道这可能是多余的,但最快的方法是添加

 using MainWindow.cs;

位于Window1.cs文件的顶部