2013-04-15 2 views
0

Я искал информацию о том, как реально реализовать это безрезультатно. Не удалось найти ни одного ресурса о том, как это сделать с помощью Caliburn Micro.RootFrame UriMapper для Caliburn Micro

В принципе, я пытаюсь это http://www.developer.nokia.com/Community/Wiki/OAuth_on_Windows_Phone

В примере, он используется в качестве redirect_uri нормальной связи. Я сделал это с помощью протокола/ассоциации файлов (см. http://www.developer.nokia.com/Community/Wiki/URI_associations_for_Windows_Phone_8). Все работает нормально. Я получил его, чтобы работать без Caliburn Micro.

Но на основании этого примера мне потребуется реализовать UriMapperBase и присвоить его RootFrame.UriMapper.

Мой вопрос в том, как я на самом деле реализую UriMapper с CaliburnMicro для WP8. Для Win 8 это отличается, поскольку я мог бы переопределить OnActivate и проверить на ActivationKind.Protocol, и нет необходимости в UriMapper.

ответ

3

Ok. Наконец удалось заставить его работать. Итак, опубликуем его здесь, потому что я уверен, что снова будет потерянная душа, подобная мне, которая по достоинству оценит ответ на этот вопрос.

Чтобы использовать UriMapper в Caliburn, вам необходимо переопределить CreatePhoneApplicationFrame в bootsrapper.

В Boostrapper.cs

protected override PhoneApplicationFrame CreatePhoneApplicationFrame() 
{ 
    // var frame = base.CreatePhoneApplicationFrame(); this doesnt work 
    var frame = new PhoneApplicationFrame(); // this works 
    frame.UriMapper = new AssociationUriMapper(); 

    return frame; 
} 

AssociationUriMapper.cs - я просто следовал примеру, как на ссылки выше

public class AssociationUriMapper : UriMapperBase 
{ 
    private string tempUri; 


    public override Uri MapUri(Uri uri) 
    { 
     tempUri = System.Net.HttpUtility.UrlDecode(uri.ToString()); 

     // URI association launch for contoso. 
     if (tempUri.Contains("pocketthis:MainPage")) 
     { 
      // Get the category ID (after "CategoryID="). 
      //int categoryIdIndex = tempUri.IndexOf("CategoryID=") + 11; 
      //string categoryId = tempUri.Substring(categoryIdIndex); 

      // Views/MainPage.xaml returns external exception, 
      // so remember the/before views 
      return new Uri("/Views/MainPage.xaml", UriKind.Relative); 
     } 

     // Otherwise perform normal launch. 
     return uri; 
    } 
} 

Надеется, что это поможет кто-нибудь пытается реализовать Uri/File Association в WP8 с Caliburn Micro.

+0

Скажите, что вы вернули Uri, как "/Views/MainPage.xaml?param=x", ow, чтобы вы получили параметр в ViewModel? –

+0

Если я не ошибаюсь, это должно сделать это. –

Смежные вопросы