首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二级Tile导航Windows Phone 8

二级Tile导航Windows Phone 8
EN

Stack Overflow用户
提问于 2013-09-16 09:57:18
回答 1查看 1.9K关注 0票数 0

当我从第二个瓷砖导航到我的应用程序时,我遇到了一个问题。创建了该块并具有一个导航uri。现在我有个问题:

在"navigateTo“上,我测试特定字符串的导航上下文。如果字符串有数字,我称之为这个数字。我遇到的第一个问题是,当我导航到应用程序中的另一个页面时(在第一次单击次要瓷砖之后),然后返回到主页,它也尝试调用这个数字,因为导航上下文与我单击次要瓷砖时相同。如果在第一次单击辅助瓷砖后清除导航上下文,则导航工作。但是,如果我暂停应用程序,然后再单击第二个瓷砖,导航上下文是空的,因此不会调用数字。

瓷砖制造

代码语言:javascript
复制
IconicTileData tileData = new IconicTileData
{
    Title = App.MainViewModel.SelectedPOI.Name,
    SmallIconImage = new Uri("/Assets/Images/feature.phone.png", UriKind.Relative),
    WideContent1 = App.MainViewModel.SelectedPOI.Name,
    WideContent2 = App.MainViewModel.SelectedPOI.Telefonnumber,
    WideContent3 = App.MainViewModel.SelectedPOI.Street
};
if (App.MainViewModel.SelectedPOI.Id == -1)
    tileData.BackgroundColor = Helper.GetColorFromHexString("#E46D1D");
else
    tileData.BackgroundColor = Helper.GetColorFromHexString("#4FAE32");

string SecondaryTileUriSource = String.Format("Source={0}&ID={1}", TILESTATUS, App.MainViewModel.SelectedPOI.Id);

//check if tile exist
ShellTile tile = Helper.FindTile(SecondaryTileUriSource);
if (tile == null)
{
    // having a unique NavigationUri is necessary for distinguishing this tile
    string tileUri = string.Concat("/MainPage.xaml?", SecondaryTileUriSource);
    ShellTile.Create(new Uri(tileUri, UriKind.Relative), tileData, true);
}

OnNavigateTo - MainPage

代码语言:javascript
复制
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    string status = String.Empty;
    if (NavigationContext.QueryString.TryGetValue("Source", out status))
    {
        MainPivot.SelectedItem = AlarmPivotItem;
        //App.MainViewModel.StartAlarm();
        //or
        //get the number from source/status...
        App.MainViewModel.CallNumber(12345);
        //NavigationContext.QueryString.Clear();
    }
}

有没有人举过这样的例子,例如,从第二个瓷砖中调用一个数字,而应用程序中可能至少有两个页面?还有其他的问题在哪里吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-16 10:07:31

与清除导航上下文不同,您可以使用NavigationMode属性来知道它是否是对页面的新导航(例如,形成第二块),或者用户是否从另一个页面返回:

代码语言:javascript
复制
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back)
    {
        if (NavigationContext.QueryString.TryGetValue("Source", out status))
        {
            MainPivot.SelectedItem = AlarmPivotItem;
            //App.MainViewModel.StartAlarm();
            //or
            //get the number from source/status...
            App.MainViewModel.CallNumber(12345);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18825160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档