基本上一切都很顺利,直到我点击我的应用程序的辅助磁贴并且没有更新任何内容。我目前正在处理的是一个笔记应用程序,其中一个主要功能是将笔记固定到开始屏幕。
问题在于,一旦创建了磁贴,就会为其分配一个唯一的随机ID,这样如果磁贴的内容需要更改,那么将使用该ID来查找该磁贴,并将其更新。一旦用户点击了新笔记上的保存,就会生成唯一ID,并且不会更改。
基本上它完成了那一部分只是一旦我点击辅助应用程序,它就会带我到一个页面,其中包含我最初创建的参数而不是我修改过的参数。
e.g。 我创建了一个注释和标题:Hello和MESSAGE:HI !!!。并将其固定到开头。现在,瓷砖向我显示标题和消息。 我决定对笔记进行更改。我将标题更改为:yes和message to:no。我打开应用程序并对注释进行更改,所有内容都会更新。现在我有自动更新的修改过的音符。现在,瓷砖向我显示修改后的注释。所以瓷砖内容是肯定的,不是。
但我决定通过点击图块查看注释。它带我到页面,但它没有显示注释的修改内容,而是向我显示了Hello和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
你看到我的问题吗?
答案 0 :(得分:1)
问题在于:
您的应用程序将显示传递给Uri参数的信息,但在更新Tile操作中,您不会使用新参数值更新Tile Uri - 仅更新Tile的数据 - 。
可能的解决方案:
由于ShellTile的NavigationUri属性是只读的,我假设不支持更新Tile的Uri。因此,我建议另外一种方法是始终创建一个新的Tile,然后删除旧的Tile(如果它已经存在)。