20

这是一个简单的问题,也是一个看似简单的任务,但我找不到任何关于如何完成我需要做的事情的信息。

我有一个应用程序,其主磁贴(固定时)有时需要是默认的单面磁贴,有时需要在磁贴的背面显示信息。我可以从 ScheduledActionService 中成功添加 BackBackgroundImage、BackContent 和 BackTitle,但是当不再需要它们时我无法删除它们。这不是辅助磁贴,因此我无法删除它并重新创建和重新添加它。

有谁知道是否可以通过代码将双面瓷砖恢复为单面,如果可以,我该如何实现这种行为?

编辑

从 StandardTileData 对象应用的设置是附加的 - 例如,如果您指定一个标题,则所有其他元素保持不变,只有标题被更新。我试图将显示在磁贴背面的三个参数设置为 null 并且取得了部分成功。效果是背景图像、标题文本和内容文本都被移除了,但磁贴仍然翻转以显示完全空白的反面。

再次编辑

因此,查看文档,瓷砖背面的行为与正面不同。将 back content 或 backtitle 设置为 string.Empty 将删除它们。那里一切都好。但是,它确实说“如果设置为空 URI,则不会显示 BackBackgroundImage。”。如何创建一个空的 Uri?我尝试了 new Uri(string,Empty) 但这引发了关于尝试创建空 Uri 的异常——这就是我想要做的。

4

3 回答 3

28

好的,我想我明白了,这似乎与处理磁贴数据的方式发生了变化有关......

以前,将值设置为空字符串现在会在磁贴中生效。例如,设置 title = string.Empty 将保留现有标题。但是,现在,它将使标题空白。很好 - 这意味着我可以轻松删除 BackTitle 和 BackContent 字符串。我们已经成功了一半。

现在,为了摆脱 BackBackgroundImage,文档指出“如果设置为空 URI,则不会显示 BackBackgroundImage。” - 一切都好,除了你不能以任何简单的方式创建一个空的 Uri。我使它工作的一种方法是将其设置为不存在的 Uri 值,例如

BackBackgroundImage = new Uri("obviouslyMadeUpLocation", UriKind.Relative);

我原以为当您尝试将其应用于磁贴时会引发异常,但事实并非如此 - 它只是清除背景图像。

就是这样了。我似乎需要做的就是调用以下命令来取消设置这些属性并将我的图块恢复原样。

private void ResetMyMainTile()
{
    ShellTile tile = ShellTile.ActiveTiles.First();
    StandardTileData data = new StandardTileData
    {
        BackBackgroundImage = new Uri("IDontExist",UriKind.Relative),
        BackContent = string.Empty,
        BackTitle = string.Empty
    };
    tile.Update(data);
}
于 2011-07-07T11:37:10.030 回答
1

这个对我有用。

new Uri("Background.png", UriKind.RelativeOrAbsolute);

ShellTile TileToFind = ShellTile.ActiveTiles.First();

        if (TileToFind != null)
        {

            StandardTileData NewTileData = new StandardTileData
            {
                Title ="Status",
                BackgroundImage = new Uri("Background.png", UriKind.RelativeOrAbsolute),
                Count = 0,
                BackTitle = "",
                BackBackgroundImage = new Uri("doesntexist.png", UriKind.RelativeOrAbsolute),
                BackContent = ""
            };

            TileToFind.Update(NewTileData);
        }
于 2012-01-16T18:47:36.330 回答
0

尝试将整个图块(所有细节)再次设置为以前/现在的所有内容,但没有背景细节。

更新
这不起作用吗?:

ShellTile tile = ShellTile.ActiveTiles.First();
tile.Update(null);

或者

tile.update(new StandardTileData());
于 2011-07-05T16:38:06.660 回答