当我从第二个瓷砖导航到我的应用程序时,我遇到了一个问题。创建了该块并具有一个导航uri。现在我有个问题:
在"navigateTo“上,我测试特定字符串的导航上下文。如果字符串有数字,我称之为这个数字。我遇到的第一个问题是,当我导航到应用程序中的另一个页面时(在第一次单击次要瓷砖之后),然后返回到主页,它也尝试调用这个数字,因为导航上下文与我单击次要瓷砖时相同。如果在第一次单击辅助瓷砖后清除导航上下文,则导航工作。但是,如果我暂停应用程序,然后再单击第二个瓷砖,导航上下文是空的,因此不会调用数字。
瓷砖制造
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();
}
}有没有人举过这样的例子,例如,从第二个瓷砖中调用一个数字,而应用程序中可能至少有两个页面?还有其他的问题在哪里吗?
谢谢
发布于 2013-09-16 10:07:31
与清除导航上下文不同,您可以使用NavigationMode属性来知道它是否是对页面的新导航(例如,形成第二块),或者用户是否从另一个页面返回:
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);
}
}
}https://stackoverflow.com/questions/18825160
复制相似问题