2017-02-16 22 views

ответ

0

Обратный тип auth.GetUI() в проекте UWP - Windows.UI.Xaml.Controls.Page. Таким образом, вы можете создать пользовательский PageRenderer в своем проекте UWP и установить собственный элемент управления как Windows.UI.Xaml.Controls.Page так же, как следующий код.

Использование

public class LoginPageRenderer : PageRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 
     { 
      base.OnElementChanged(e); 
      if (Control == null) 
      { 
       SetNativeControl(new NativeLoginPage());  
      } 
     }   
    } 

NativeLoginPage

Добавить рамку для NativeLoginPage <Frame x:Name="Myframe " />.

private void btn_Click(object sender, RoutedEventArgs e) 
{ 
    var auth = new OAuth2Authenticator(
     clientId: "", 
     scope: "", 
     authorizeUrl: new Uri(""), 
     redirectUrl: new Uri("") 
     ); 
    auth.Completed += Auth_Completed; 
    var page = auth.GetUI(); 
    Myframe.Navigate(auth.GetUI()); 
} 

private void Auth_Completed(object sender, AuthenticatorCompletedEventArgs e) 
{ 
    if (e.IsAuthenticated) 
    { 
    } 
    else 
    { 
    } 
} 
+0

Спасибо, я попытался выше код, но (Control в Windows.UI.Xaml.Controls.Page) .Frame является возвращение нулевой –

0

я застрял с той же проблемой, и я следовал пост с самого начала, потому что я пытаюсь сделать то же самое в то же время. У меня есть совместный проект, проект iOS и проект UWP (от меня нет Android). У меня нет проблем с iOS, это работает как шарм. Но я не могу завершить работу с PageRenderer с помощью UWP.

Итак, я последовал рекомендациям Нико Чжу. Я добавил элемент управления пользователя Xaml в свой проект UWP. Я также добавил фрейм в Xaml, как упоминалось выше. Но когда выполняется заявление Myframe.Navigate (auth.GetUI()), я получил ошибку «Анализ Xaml не удалось»

Но тогда я нашел это: http://damianblog.com/2016/09/04/uwp-oauth-in-xamarin-forms-using-xamarin-auth/. Я следил за инструкциями, упомянутыми в нем, и это сработало отлично.

Надеюсь, что это поможет кому-то.

0

Прямой ответ на ваш вопрос заключается в следующем фрагменте кода для UWP:

Windows.UI.Xaml.Controls.Frame root_frame = Windows.UI.Xaml.Window.Current.Content as Windows.UI.Xaml.Controls.Frame; 
root_frame.Navigate(auth.GetUI(), auth);