2014-06-18 157 views
1

當我在我的定義的MainPage一個簡單的TextBlock:刷新ThemeResources恢復應用

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <TextBlock Text="Example" FontSize="30" Foreground="{StaticResource PhoneForegroundBrush}"/> 
</Grid> 

正如你可以看到我使用StaticREsource PhoneForegroundBrush。它的工作原理相當不錯: enter image description here

但是當用戶在應用程序暫停時更改電話主題(光/黑)時出現問題。然後,當用戶返回到應用程序,資源沒有得到更新,所以我的文字塊看起來是這樣的:

enter image description here

當我關閉該應用程序並重新啓動,一切都很好:

enter image description here

是否有方法可以放入恢復事件,這將更新資源以便我的UIElements可見?

回答

2

使用ThemeResource,它根據當前活動的主題檢索值。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <TextBlock Text="Example" FontSize="30" Foreground="{ThemeResource PhoneForegroundBrush}"/> 
</Grid> 

ThemeResource XAML標記擴展通過評估一個參照本發明的資源,具有取決於 當前活動的主題,其檢索不同的資源附加 系統邏輯提供了用於任何XAML 屬性的值。類似於StaticResource,resourceDictionary中定義的資源爲 ,ThemeResource的用法引用ResourceDictionary中該資源的關鍵字 。

ThemeResource markup extension

+0

謝謝。完美的作品。 – Romasz