2012-05-10 74 views
1

在Silverlight中,我使用了一個配置文件窗口,並且可以選擇在超鏈接按鈕中刪除當前配置文件。當用戶點擊超鏈接按鈕時,它會將它們帶到一個新表單中以確認刪除。雖然刪除功能已經起作用(即,配置文件已從數據庫中刪除),但如何在用戶確認後獲得第一個關閉的窗口?從當前窗口關閉上一個窗口

這是從那裏dProfile calls-

private void deleteProfile(object sender, RoutedEventArgs e) 
    { 

     deleteProfile dProfile = new deleteProfile(); 
     dProfile.textBlock1.Text = System.Convert.ToString("Delete " + lblMsg.Content); 
     dProfile.Show(); 
    } 

隨後的超級鏈接我要關閉profileForm的超級鏈接坐鎮當用戶點擊確定 - 什麼

private void OKButton_Click(object sender, RoutedEventArgs e) 
    { 

     textBlock1.Text = "Profile Deleted."; 
     profileForm.Close(); 

     Close(); 
    } 

然而dProfile當我創建它的新實例時,表單只能識別profileForm,我如何引用當前正在使用的實例?

回答

2

可能有一些其他的方式,但你可以嘗試以下。

在子窗口中你OKButton_Click事件

private void OKButton_Click(object sender, RoutedEventArgs e) 
{ 
    if (SubmitClicked != null) 
    { 
     SubmitClicked(this, new EventArgs()); 
    } 
} 

創建事件

public event EventHandler SubmitClicked; 

不要在主窗口下面,附上事件對ChildWindow對象

deleteProfile.SubmitClicked += new EventHandler(deleteProfile _SubmitClicked); 

然後在事件你c烏爾德做:

private void deleteProfile_SubmitClicked(object sender, EventArgs e) 
{ 
    this.Close(); 
} 

(雖然它在這裏不需要,但你可以使用過程中的子窗口值傳遞給父窗口)還檢查了該article

+1

輝煌代碼/答案。 – Ebikeneser

+0

出於興趣,我在Silverlight應用程序的主頁面中有一個列表框,它具有一個列表框,當用戶選擇一個項目時,打開profileForm,然後dProfile窗體成爲第三階段。當用戶在dProfile表單上單擊確定時,是否可以刷新主頁中的列表框? – Ebikeneser

+0

只是說列表框與web服務調用相關聯。 – Ebikeneser

0

讓你的自己成爲刪除表單中的一個屬性。 此屬性應爲:IsDeleted。 當用戶單擊確定時,將其設置爲True。 然後,當您返回到主窗口時,請閱讀此屬性並關閉當前窗口。

或者從子窗口結果...

var viewModel = _srvLocator.GetInstance<YourViewModel>(); 
var inst = _srvLocator.GetInstance<IWindowManager>(); 

if (inst.ShowDialog(viewModel).Value) 
{ 
Close(); 
} 
相關問題