Я строю приложение Xamarin.Forms PCL.Навигация Xamarin не меняется при первом запуске
У меня есть некоторые Войти логику Hande .. Войти ..
В принципе: если authtoken присутствует, он будет вызывать DoLogin() напрямую и перенаправлять на моей странице MasterDetail.
Код:
// tries to get remote token and calls DoLogin(Token)
private async void AttemptLogin(string username, string password)
{
Debug.WriteLine("AttemptLogin");
var service = new WebService();
var loginTask = service.AuthorizeCredentials(username, password);
var token = await loginTask;
if (token.Length > 0)
{
DoLogin(token);
}
}
// Tries to get local token and calls DoLogin(Token)
private void TryGetLocalAuthtoken()
{
if (Application.Current.Properties.ContainsKey("authToken"))
{
var authToken = Application.Current.Properties["authToken"].ToString();
DoLogin(authToken);
}
}
private void DoLogin(string token = null)
{
Application.Current.Properties["authToken"] = token; //todo add timestamp
Debug.WriteLine("DoLogin - Token: {0}", token);
Application.Current.MainPage = new CustomerMdPage();
}
Весь этот код запускаемый, его начинается моя страница MasterDetail и извлекает данные (из метода в конструкторе)
Но страница не перенаправляются на страницу MasterDetail, он остается на странице входа.
Затем я могу ввести учетные данные и логин, который перенаправит меня на мой MasterDetail.
Вопрос:
Почему я не перенаправлены на мой MasterDetail в первый раз код запуска?
Я с радостью отправлю код или уточню, если этого недостаточно.
Edit: код MasterDetail запрашивали
public CustomerMdPage()
{
_service = new WebService();
_locator = CrossGeolocator.Current;
_locator.DesiredAccuracy = 50;
_dataAccess = new DataAccess();
var listview = new ListView { ItemTemplate = new DataTemplate(typeof(CustomerViewCell)) };
listview.ItemSelected += (s, e) =>
{
if (e.SelectedItem != null)
{
Detail.BindingContext = e.SelectedItem;
IsPresented = false;
listview.SelectedItem = null;
}
};
Master = new ContentPage()
{
Padding = new Thickness(20, Device.OnPlatform(40, 20, 0), 10, 20),
Title = "Customers",
Content = listview
};
GetCustomers(listview);
Detail = new CustomerDetailPage();
}
ли вы уверены, что это поражает DoLogin? Вы пытались установить точку останова? Если да, можете ли вы опубликовать код CustomerMdPage –
Я очень уверен, это единственная причина, по которой этот вопрос существует. Я не вижу, как мой код MasterDetail имеет значение, но обязательно –
Хм, при первом ударе точки останова Current.MainPage имеет значение NULL, во второй раз это = LoginView, может ли быть причиной этого maby? –