2017-02-16 31 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);