2011-11-01 52 views

回答

1

有兩種方法我可以想到做到這一點。我假設你的Login viewmodel類派生自Caliburn.Micro.Screen。

1)讓視圖模型(代表您的登錄屏幕)公開一個返回用戶配置的屬性。然後,您可以像下面訪問它在成功登錄:

var windowManager = new WindowManager(); 
var login = new MyLoginViewModel(); 
if (windowManager.ShowDialog(login) == true) 
{ 
    var configurationInfo = login.MyUserConfigurationInfo; 
} 

2)在成功登錄時添加的用戶配置信息到應用程序的資源字典。下面的例子顯示了你在login viewmodel裏面設置「Login」方法。

void Login() 
{ 
    /* Authentication Logic success */ 
    App.Current.Resources["UserConfigurationInfo"] = new UserConfigurationInfo(); 
    TryClose(true); 
} 
+0

謝謝阿德里安。你的第一個建議看起來最好。如何從登錄視圖模型設置窗口管理器的結果,以便我可以測試真實? –

+0

它會像第二個選項一樣工作,除非您設置屬性而不是某些應用程序資源。實質上,當用戶在LoginViewModel內進行身份驗證時,您需要將LoginViewModel的「MyUserConfigurationInfo」屬性設置爲該類型的實例。 – Adrian

1

我不知道Caliburn Micro WindowManager,但如果你的模態對話框視圖有一個viewmodel,那麼只需要viewmodel你可以訪問你的對象?

在我的項目中有一個ILoginViewModel,我在app.c的DialogResult = true後使用。 (我用MEF輸出這個信息,所以它很容易訪問我的模塊)

相關問題