当我从辅助磁贴导航到我的应用时,我遇到了问题。瓷砖已创建并具有导航uri。现在我有一个问题:
在“navigateTo”上,我测试特定字符串的navigationcontext。如果字符串有数字,我会拨打这个号码。我遇到的第一个问题是当我导航到应用程序内的其他页面(首次点击辅助磁贴后)然后返回主页时,它也会尝试调用该号码,因为navigationcontext与我点击时相同二级瓷砖。 如果我在第一次单击辅助磁贴后清除了navigationcontext,则导航将起作用。但是,如果我暂停应用程序而不是再次单击辅助磁贴,则navigationcontext为空,因此不会调用任何数字。
创建图块
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
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();
}
}
有人举例如:从辅助磁贴调用一个数字,应用程序内可能至少有2个页面? 还有其他问题可以解决问题吗?
谢谢
答案 0 :(得分:1)
您可以使用NavigationMode
属性来知道它是否是页面的新导航(例如,形成辅助磁贴),或者用户是否从其他页面返回时,而不是清除导航上下文: / p>
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);
}
}
}