2014-01-30 47 views
0

我怎樣才能調用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; 
       } 
     } 
    } 

回答

1

在這裏創建了幾個選項:

  1. 給窗口1的引用,主窗口,因此它可以調用Zamkniecie方法。
  2. 使Zamkniecie方法靜態。
  3. 將Zamkniecie方法移入Window1。
  4. 如果只有一個MainWindow實例,請將MainWindow實現爲單例,以便您可以從任何地方訪問它。
  5. 如果MainWindow實例化Window1,則從在MainWindow上處理的Window1引發一個事件。
  6. 如果MainWindow沒有實例化Window1,則實現觀察者模式。

如果可能的話,我更喜歡選項5,因爲它更緊密地允許每個類自己管理。如果你只想在Window1關閉時調用Zamkniecie,你應該能夠從MainWindow中識別出來。這裏有一個代碼片段可能會包含在主窗口:

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

注:哪個文件,這些類是在沒有什麼區別,只要他們是在同一個命名空間。

+0

1.我會必須有唯一的無級一個xaml文件,因爲組件不可見。 2.靜態方法需要靜態字段3.移動方法導致所有字段出錯例如:名稱'WszystkieZdarzeniaStackPanel2'在當前上下文中不存在 – user231605

+0

@ user231605我不確定在1中的含義。對於2,您可以實現如果在您的應用程序中確實只有一個MainWindow實例,則首先將MainWindow作爲單例。我將更新答案以反映這一點。 –

+0

沒問題,但是當它調用靜態對象上的方法時,它在創建對象時初始化的字段中工作。 – user231605

0

我知道這可能是多餘的,但最快的方法是在Window1.cs的頂部添加

using MainWindow.cs; 

文件

+0

我不能使用MainWindow.cs添加;或使用MainWindow.xaml.cs; 位於Window1.cs文件的頂部,因爲我有錯誤:無法找到類型或名稱空間名稱'MainWindow'(缺少使用指令或程序集引用嗎?) – user231605

+0

使用的是名稱空間,而不是類名稱。 –

+0

我有權訪問MainWindow類,但它是關於我不想創建新對象,因爲我具有不同的值組件。調用方法而不創建新類MainWindow的想法。 – user231605

相關問題