WP8 - 无法更新平铺参数

时间:2013-12-24 23:00:53

标签: windows-phone-8 tile

基本上一切都很顺利,直到我点击我的应用程序的辅助磁贴并且没有更新任何内容。我目前正在处理的是一个笔记应用程序,其中一个主要功能是将笔记固定到开始屏幕。

问题在于,一旦创建了磁贴,就会为其分配一个唯一的随机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 & "&parameter1=" & TileData.WideContent2.ToString & "&parameter2=" & 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 & "&parameter1=" & TileData.WideContent2.ToString & "&parameter2=" & 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

你看到我的问题吗?

1 个答案:

答案 0 :(得分:1)

问题在于:

  

您的应用程序将显示传递给Uri参数的信息,但在更新Tile操作中,您不会使用新参数值更新Tile Uri - 仅更新Tile的数据 - 。

可能的解决方案:

  

由于ShellTile的NavigationUri属性是只读的,我假设不支持更新Tile的Uri。因此,我建议另外一种方法是始终创建一个新的Tile,然后删除旧的Tile(如果它已经存在)。