我試圖用密碼保護我的應用程序。我選擇了一個PopUp窗口,用戶可以在其中輸入密碼。如何從PopUp窗口到達ApplicationBar?
我的應用程序包含ApplicatioBar,因此我需要在顯示密碼輸入對話框時將其隱藏。 我做如下:
public MainPage()
{
...
PasscodeApplicationBarVisibility(); //Now AppBar disapears
PasscodeEvent();
}
private void PasscodeApplicationBarVisibility()
{
((ApplicationBar)ApplicationBar).IsVisible = !(settings.PasscodeRequired);
}
private void PasscodeEvent()
{
passwordInput = new PasswordInputPrompt {
Title = "Please Enter Passcode!",
InputScope = new InputScope { Names = { new InputScopeName() { NameValue = InputScopeNameValue.TelephoneNumber } } }, };
passwordInput.Completed += new EventHandler<PopUpEventArgs<string, PopUpResult>>(passwordInput_Completed);
passwordInput.Show();
}
void passwordInput_Completed(object sender, PopUpEventArgs<string, PopUpResult> e)
{
if (settings.Passcode.Equals(e.Result)) {
settings.PasscodeRequired = false;
//Here is the problem - NullReferenceException
PasscodeApplicationBarVisibility();
((PasswordInputPrompt)sender).Completed -= passwordInput_Completed; }
else {
((PasswordInputPrompt)sender).Completed -= passwordInput_Completed;
IncorrectPasscode = true;
PasscodeEvent(); }
}
應用程序任務欄消失,應該是。 當用戶輸入有效的密碼時,應用程序應該顯示ApplicationBar。但是當我嘗試從PopUp窗口到達ApplicationBar時,我得到NullReferenceException
,這是可以理解的,因爲PopUp窗口不包含ApplicationBar。當PopUp窗口打開時,我不知道如何到達MainPage的ApplicationBar。
請提供任何提示?
UPDATE:
謝謝你的答案傢伙。我沒有提到PasswordInputPrompt
是Coding4Fun工具包的一部分,這是我的錯誤。我確定PasswordInputPrompt
繼承自System.Windows.Controls.Primitives.PopUp
。正如你所知道的那樣。 丹尼斯Delimarsky的答案是正確的,因爲使用標準PopUp考慮。
幸運的是,來自Coding4Fun項目的編碼人員預測需要爲父項進行創建。在我的情況下,答案如下:passwordInput.Parent.Dispatcher.BeginInvoke(PasscodeApplicationBarVisibility);
感謝您的回答,我明白'PasswordInputPrompt'不會從'System.Windows.Controls.Primitives.PopUp'繼承。它沒有像「Closed」或「Closing」這樣的事件。就使用'System.Windows.Controls.Primitives.PopUp'而言,你的回答是絕對正確的。 – Maku 2011-05-08 12:34:03