2015-09-24 51 views
2

我有一對夫婦鏈接控件如下:如何在WPF窗口關閉後調用方法?

ProductSearchControl (UserControl) [contains SearchProducts()] 
    --ProductListControl (UserControl) 
      --ProductResultPanel(UserControl) 
        | 
        | 
        | 
      ProductDetailsWindow (Window) 

ProductResultPanel.xaml.cs,下面的方法被調用點擊一個按鈕。

void OnModifyPrice(object sender, RoutedEventArgs e) 
    { 
     if (this.ModifyPrice != null) 
     { 
      ProductDetailsWindow win = new ProductDetailsWindow(this.productId); 
      win.ShowInTaskbar = false; 
      win.WindowStartupLocation = WindowStartupLocation.CenterScreen; 
      win.Owner = Window.GetWindow(this); 
      bool? result = win.ShowDialog(); 
     } 
    } 

ProductDetailsWindow,如果我點擊一個按鈕,我想執行SearchProducts()ProductSearchControl,但我目前遇到了困難。

ProductDetailsWindow.xaml.cs

private void OnCancel(object sender, RoutedEventArgs e) 
    { 
     this.DialogResult = false; 
    } 

    private void OnSave(object sender, RoutedEventArgs e) 
    { 
     this.DialogResult = true; 
    } 

所以點擊Save按鈕後,我回到ProductResultPanel,但我不知道如何調用SearchProducts()

這是可能的,如果是這樣,任何幫助將不勝感激?

+1

化妝SearchProducts公衆,並與您的ProductSearchControl – Les

+0

@Les的實例調用它,如在第二個代碼塊我沒有ProductSearchControl的一個實例。 – Bhav

回答

1

即使關閉它,Window仍然存在,並且您可以從ProductResultPanel.xaml.cs訪問其公共屬性和方法。例如:

var x = win.SomePublicProperty; 
var y = win.GetProducts(); 
// whatever you need and provide access to in ProductDetailsWindow 
+0

我不想訪問ProductDetailsWindow中的任何內容。我想從ProductResultsPanel.xaml.cs執行SearchProducts()。 – Bhav

+0

@bhav就像他們在做win.GetProducts(); ? – kenny

+0

'ProductDetailsWindow'有一個'ProductSearchControl','ProductSearchControl'有'SearchProducts()?該窗口不能訪問該方法併爲您提供結果嗎? – PScr