2010-10-21 85 views
2

我是新來創建Silverlight應用程序。我繼承了一個我被告知使用Prism的代碼庫。根據我在代碼庫中看到的,這看起來是真的。我的問題是,我只是想打開一個對話窗口並關閉一個對話窗口。使用Silverlight Prism創建對話框

要打開對話窗口,我使用了以下內容:

UserControl myDialog = new MyDialog(); 

    IRegion region = myRegionManager.Regions["DIALOG_AREA"]; 
    IRegionManager popupRegionManager = region.Add(myDialog, null, true); 
    region.Activate(myDialog); 

我設計的對話框出現。它有兩個按鈕:「確定」和「取消」。當用戶點擊這些對話框時,我想關閉對話框。我的問題是,我不知道如何做到這一點。由於該對話框不是ChildWindow,因此我無法調用this.Close()。但是,當我將MyDialog更改爲ChildWindow時,它被封裝在一些自定義窗口鑲邊中,我無法弄清楚如何擺脫。

如何關閉棱鏡中的對話框?謝謝!

+0

什麼樣的控制是用來包裹「DIALOG_AREA」區域?是否正在使用區域適配器? – 2010-10-22 03:18:47

+0

從我可以告訴,是的。 – Villager 2010-10-22 12:41:11

+0

你能提供關於這個適配器的更多信息嗎?這與Prism Stock Trader RI中使用的是否一樣?您提供的信息越多,任何人都能夠提供答案。 – 2010-10-22 12:48:55

回答

0

而不是放在一個不同的地區,你應該讓你的ViewModel調用一個服務,你可以調用你的對話窗口。

public MainPageViewModel(IMainPage view, 
          ILoginBox loginBox) 
     : base(view) 
    { 
     this.view = view; 
     this.loginBox = loginBox; 
} 

public interface ILoginBox 
{ 
    void Show(); 
} 

記得使用IOC容器,並在你的ModuleClass聲明:

protected override void RegierTypes() 
    { 
     base.Container.RegisterType<ILoginBox , LoginBox>(); 
} 

我希望它能幫助。

如果你還在尋找一個例子,檢查: another Stackoverflow sample