【问题标题】:Mango Application Tile - remove backMango Application Tile - 移除
【发布时间】:2011-09-28 06:20:18
【问题描述】:

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

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

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

编辑

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

再次编辑

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

【问题讨论】:

  • 你是如何删除它的?
  • 我尝试将三个“Back”属性设置为空值(无效)、空字符串/URI(无效)。我还尝试创建 2 个 StandardTileData 对象(一个用于单面,1 个用于双面)并酌情应用它们,但这也失败了。

标签: tile windows-phone-7


【解决方案1】:

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

以前,将值设置为空字符串现在会在图块中生效。例如,设置 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);
}

【讨论】:

  • 您可以像这样创建一个空的 Uri:new Uri("", UriKind.Relative)(请注意,如果您将 UriKind 指定为 Absolute,则会引发异常)。
【解决方案2】:

这个对我有用。

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);
        }

【讨论】:

    【解决方案3】:

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

    更新
    这不行吗?:

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

    tile.update(new StandardTileData());
    

    【讨论】:

    • 感谢马特的建议,但这些设置是附加的 - 如果您省略其中一个参数,则参数的先前值将保持不变(例如,仅设置磁贴标题将保留瓷砖完好无损)。这就是为什么我认为将它们设置为 null 可以解决问题,并且它部分做到了 - 它从瓷砖背面删除了可见元素,但背面仍然显示为空瓷砖。 :(
    • 我已根据文档更新了我的问题。我现在一直试图为背景图像创建一个“空 Uri”。请问有什么建议吗?
    • Matt Lacey - 不,恐怕他们都没有。感谢您的尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多