все
Как и в большинстве приложений, мне нужно добавить страницу входа в мое приложение, если установлен пароль. Ожидаемое поведение приложения заключается в том, что, только если установлен пароль, оно должно перейти к passwordpage.xaml, а при вводе правильного пароля оно должно перейти к mainpage.xaml. Если пароль не установлен, он должен перейти непосредственно на mainpage.xaml.
В следующем блоге предполагается, что необходима повторная навигация, чтобы включить проверку в app.xaml.cs, которая определяет, на какую страницу должно перейти приложение.
Но проблема сейчас в том, что дальнейшая навигация со страницы паролей не происходит. Когда пароль установлен, он переходит на страницу пароля, но после проверки соответствия пароля он не перемещается в файл mainpage.xaml, а возвращается к обработчику событий rootframe_navigating и выполняет цикл.
http://blogs.msdn.com/b/ptorr/archive/2010/08/28/redirecting-an-initial-navigation.aspx
Это функция в app.xaml.cs
void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
//throw new NotImplementedException();
if (e.Uri.ToString().Contains("/MainPage.xaml") != true)
return;
CycleManager pCycMan = CycleManager.instance;
bool checkOk = false;
pCycMan.ReadFromIsolatedStorage();
if (pCycMan.GetPasswordEnabled())
{
checkOk = true;
}
e.Cancel = true;
RootFrame.Dispatcher.BeginInvoke(delegate
{
if (checkOk)
RootFrame.Navigate(new Uri("/PasswordPage.xaml", UriKind.Relative));
else
RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
});
}
А эта функция написана по нажатию кнопки в passwordpage.xaml
private void OnClick(object sender, RoutedEventArgs e)
{
CycleManager pCycMan = CycleManager.instance;
if (pCycMan.GetPassword() == passwordBox1.Password)
{
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
else
{
MessageBox.Show("Incorrect Password");
}
}
Есть предложения?
Алфа