Xamarin.Forms应用程序可以使用DynamicResource标记扩展在运行时动态响应样式更改。

此标记扩展类似于StaticResource标记扩展,两者都使用字典键从ResourceDictionary中获取值。 但是,在StaticResource标记扩展执行单个字典查找的同时,DynamicResource标记扩展维护与字典键的链接。 因此,如果替换了与键关联的值,则更改将应用于VisualElement。 这使得可以在Xamarin.Forms应用程序中实现运行时主题。

在Xamarin.Forms应用程序中实现运行时主题的过程如下:

  1. 创建一个xaml文件,继承ResourceDictionary,并在其中为每个主题定义资源
  2. 使用DynamicResource标记扩展在应用程序中使用主题资源
  3. 在应用程序的App.xaml文件中设置默认主题
  4. 添加代码以在运行时加载主题。

定义主题

创建xaml文件,主题定义为存储在ResourceDictionary中的资源对象的集合。

以下示例显示了示例应用程序中的LightTheme:

<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
                    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                    x:Class="ThemingDemo.LightTheme">
    <Color x:Key="PageBackgroundColor">White</Color>
    <Color x:Key="NavigationBarColor">WhiteSmoke</Color>
    <Color x:Key="PrimaryColor">WhiteSmoke</Color>
    <Color x:Key="SecondaryColor">Black</Color>
    <Color x:Key="PrimaryTextColor">Black</Color>
    <Color x:Key="SecondaryTextColor">White</Color>
    <Color x:Key="TertiaryTextColor">Gray</Color>
    <Color x:Key="TransparentColor">Transparent</Color>
</ResourceDictionary>
View Code

相关文章: