2017-02-16 30 views

回答

0

UWP項目中auth.GetUI()的退貨類型爲Windows.UI.Xaml.Controls.Page。因此,您可以在UWP項目中創建自定義PageRenderer,並將原生控件設置爲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

謝謝,我在上面的代碼嘗試,但(控件作爲Windows.UI.Xaml.Controls.Page).Frame是返回NULL –

0

我被卡住了同樣的問題,我從一開始就跟着帖子,因爲我試圖在同一時間做同樣的事情。我有一個共享的項目和一個iOS項目和一個UWP項目(代表我沒有安卓)。我對iOS沒有任何問題,它就像一個魅力。但是,我無法用UWP最終確定PageRenderer。

因此,我遵循了Nico Zhu的建議。我在UWP項目中添加了Xaml用戶控件。我還在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);