2011-07-04 44 views
20

這是一個簡單的問題,和看似簡單的工作,但我無法找到如何完成我需要做的任何信息。芒果應用拼貼 - 刪除回

我有一個應用程序,其主要區塊(釘扎時),有時需要將默認的,單面瓦,有時需要具有在瓷磚的背面顯示的信息。我可以從ScheduledActionService成功添加BackBackgroundImage,BackContent和BackTitle,但是當它們不再需要時,我無法刪除它們。這不是次級磁貼,因此我無法刪除它並重新創建並重新添加它。

有誰知道是否有可能恢復雙面瓦回通過代碼單面,如果是這樣,我怎麼能做到這一點的行爲,好嗎?

編輯

是那些獲得從StandardTileData對象應用這些設置是相加的 - 如果你只指定一個標題,例如,所有其他元素保持不變,只有標題被更新。我試圖將出現在瓦片背面的三個參數設置爲空,並取得部分成功。其效果是背景圖片,標題文字和內容文字全部被刪除,但拼貼仍然翻轉顯示完全空白的背面。

再次編輯

所以,看文件,瓷磚背面的行爲不同前線。將後面的內容或反向設置爲string.Empty將刪除這些內容。那裏一切都很好。但是,它確實表示「如果設置爲空URI,BackBackgroundImage將不會顯示。」我如何去創建一個空的Uri?我嘗試了新的Uri(string,Empty),但是拋出了一個關於嘗試創建一個空Uri的異常 - 這正是我正在嘗試做的。

+0

如何你想刪除它? –

+0

我試過設置了三個「返回」屬性空值(沒有工作),空字符串/的URI(沒有工作)。我也嘗試創建2個StandardTileData對象(一個用於單面,一個用於雙面)並適當地應用它們,但也失敗了。 – ZombieSheep

回答

28

OK,我想我已經得到了它,它似乎與在改變順便片數據處理...

以前,值設置爲空字符串將有現在的效果在瓷磚中。對於eaxmple,設置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); 
} 
+2

你可以這樣創建一個空的Uri:'新的URI(「」,UriKind.Relative)'(請注意,如果你指定UriKind絕對的,它會扔一個例外)。 – hasseg

0

請嘗試重新設置整個瓦(所有細節)一切如前/現,但沒有背景細節。

更新
這難道不是工作?:

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

tile.update(new StandardTileData()); 
+1

感謝您的建議,馬特,但這些設置是添加劑 - 如果省略的一個參數,該參數的前值仍然存在(例如只設置平鋪標題將離開瓦的所有其他位不變)。這就是爲什麼我認爲將它們設置爲null會做到這一點,並且它部分地做到了這一點 - 它從瓦片的背面移除可見元素,但背部仍然顯示爲空的瓦片。 。:( – ZombieSheep

+0

我已經更新了我的問題基於文檔我現在被困在嘗試創建一個「空URI」爲背景圖像的任何建議上,請 – ZombieSheep

+0

@ZombieSheep答案更新 –

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