【发布时间】:2013-12-24 23:00:52
【问题描述】:
基本上一切都很好,直到我点击了我的应用程序的辅助磁贴并且没有任何更新。我现在正在做的是一个笔记应用程序,其中一个主要功能是将笔记固定到开始屏幕。
问题在于,一旦创建了磁贴,它就会被分配一个唯一的随机 ID,因此如果磁贴的内容需要更改,该 ID 将用于查找该磁贴,如果它被固定并更新。用户在新笔记上点击保存后会生成唯一 ID,并且不会更改。
基本上这部分没问题,只是一旦我点击辅助应用程序,它会将我带到一个页面,其中包含我最初创建的参数,而不是我修改过的参数。
例如 我创建了一个注释和标题:你好和消息:你好!!!。并将其固定在开头。现在磁贴向我显示标题和消息。 我决定对笔记进行更改。我将标题更改为:是,消息更改为:否。我打开应用程序并对笔记进行更改,一切都会更新。现在我有自动更新的修改后的注释。现在磁贴向我显示修改后的注释。所以瓷砖内容将是和否。
但我决定通过单击磁贴来查看注释。它带我到页面,但不是显示注释的修改内容,而是显示初始注释文本,即 Hello and Hi!!而不是是和否。
我的创建和更新源代码是:
Dim contextMenuListItem As ListBoxItem = DirectCast(ItemsList.ItemContainerGenerator.ContainerFromItem(DirectCast(sender, MenuItem).DataContext), ListBoxItem)
Dim item As SampleData1 = DirectCast(contextMenuListItem.Content, SampleData1)
Dim TileToFind As ShellTile = ShellTile.ActiveTiles.FirstOrDefault(Function(x) x.NavigationUri.ToString().Contains("parameter2=" & item.ID))
If TileToFind Is Nothing Then
Dim TileData As New IconicTileData() With { _
.Title = item.Name, _
.WideContent1 = item.Name, _
.WideContent2 = item.Description, _
.WideContent3 = item.ID, _
.SmallIconImage = New Uri("Assets/Tiles/IconicTileSmall.png", UriKind.Relative), _
.IconImage = New Uri("Assets/Tiles/IconicTileMediumLarge.png", UriKind.Relative), _
.BackgroundColor = Colors.Transparent}
ShellTile.Create(New Uri("/CreateNote.xaml?parameter=" & TileData.Title.ToString & "¶meter1=" & TileData.WideContent2.ToString & "¶meter2=" & TileData.WideContent3.ToString, UriKind.Relative), TileData, True)
Else
Dim TileData As New IconicTileData() With { _
.Title = item.Name, _
.WideContent1 = item.Name, _
.WideContent2 = item.Description, _
.SmallIconImage = New Uri("Assets/Tiles/IconicTileSmall.png", UriKind.Relative), _
.IconImage = New Uri("Assets/Tiles/IconicTileAssets/IconicTileMediumLarge.png", UriKind.Relative), _
.BackgroundColor = Colors.Transparent}
TileToFind.Update(TileData)
End If
视频显示我的意思:https://www.youtube.com/watch?v=xsedPk7YKdw
添加 ======================================= ============================================
使用导航参数创建磁贴的代码:
ShellTile.Create(New Uri("/CreateNote.xaml?parameter=" & TileData.Title.ToString & "¶meter1=" & TileData.WideContent2.ToString & "¶meter2=" & TileData.WideContent3.ToString, UriKind.Relative), TileData, True)
在 CreateNote 页面上的参数:
Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
MyBase.OnNavigatedTo(e)
Dim parameter As String = String.Empty
Dim parameter1 As String = String.Empty
Dim parameter2 As String = String.Empty
If NavigationContext.QueryString.TryGetValue("parameter", parameter) Then
Me.Title.Text = parameter
OldFName.Text = parameter
End If
If NavigationContext.QueryString.TryGetValue("parameter1", parameter1) Then
Me.Message.Text = parameter1
End If
If NavigationContext.QueryString.TryGetValue("parameter2", parameter2) Then
Me.IDG.Text = parameter2
End If
End Sub
你看到我的问题了吗?
【问题讨论】:
-
除了更新Tiles数据之外,你确定你更新了数据源中的notes数据吗?我假设当一个磁贴被点击时,CreateNote 页面打开并根据 Uri 参数从数据源加载笔记数据。
-
嗨,是的,Note 确实会更新并保存到存储位置。一旦保存了触发更新磁贴事件的注释。所以基本上它都更新了,当用户单击带有更新信息的磁贴时,导航会转到页面但显示旧内容。我已经用一段视频更新了我的帖子,清楚地表明了我的意思。
-
问题中要包含的更相关的代码是读取 Uri 参数并在 CreateNote 页面中加载相关数据的代码。问题更可能存在,因为创建和更新 Tile 数据已按您的意愿进行。
-
嘿,我更新了我的帖子
-
你能帮我解决这个问题吗? :)
标签: windows-phone-8 tile