C# 如何更新WalletItem?

C# 如何更新WalletItem?,c#,windows-phone-8.1,C#,Windows Phone 8.1,我如何更新一个文件?我可以删除然后添加一个WalletItem,但是当我这样做时,WalletItem的磁贴就会从开始屏幕上消失,我想其他不好的事情也会发生 如何在不删除WalletItem的情况下更新它?使用商店的方法 为什么这样做的秘密是,当你通过获得一张票时,WalletItems已经设置了他们的Id。这是一个只读属性。因此,当您通过该方法发回WalletItems时,存储从WalletItem读取Id 这对我来说有点奇怪,至少因为接受Id作为参数而不是项的属性 例如: var newTi

我如何更新一个文件?我可以删除然后添加一个
WalletItem
,但是当我这样做时,
WalletItem
的磁贴就会从开始屏幕上消失,我想其他不好的事情也会发生

如何在不删除WalletItem的情况下更新它?

使用商店的方法

为什么这样做的秘密是,当你通过获得一张票时,WalletItems已经设置了他们的
Id
。这是一个只读属性。因此,当您通过该方法发回WalletItems时,存储从WalletItem读取Id

这对我来说有点奇怪,至少因为接受Id作为参数而不是项的属性

例如:

var newTicket = MyService.GetTicket();

var store = await WalletManager.RequestStoreAsync();
var currentTickets = await store.GetItemsAsync();            

if (currentTickets.Count(x => x.Id == newTicket.SerialNumber) == 1)
{
    // the ticket exist so let's update it

    // get the "old" ticket from the Wallet store
    var ticket = currentItems.First(x => x.Id == newTicket.SerialNumber);

    // update the "old" ticket with the updated information
    ticket.DisplayName = newTicket.Name;
    ticket.BodyColor = Color.FromArgb(255, 255, 0, 0);

    // put the updated "old" ticket back in the store again
    await store.UpdateAsync(ticket);
}
else
{
    // the ticket does not exist so let's add it
    await store.AddAsync(newTicket.SerialNumber, new WalletItem(WalletItemKind.Ticket, newTicket.Name)
        {
            BodyFontColor = Color.FromArgb(255, 255, 255, 255),
            BodyColor = Color.FromArgb(255, 50, 50, 230),
            DisplayName = newTicket.Name,
            ExpirationDate = newTicket.ExpireDate,
            IssuerDisplayName = "My Company"
        });
}