如何在 Xamarin 表单中的主题资源字典中应用条件

How to apply condition inside the theme resource dictionary in Xamarin forms

我已经通过资源字典为 Xamarin 应用应用了浅色主题和深色主题。

这是我的资源示例

浅色主题:

<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
                    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                    x:Class="App.Views.Themes.LightTheme"
                    xmlns:converters="clr-namespace:App.Services.Helper;assembly=App.Services">

 <!-- bootm bar background color -->
    <Color x:Key="BottomBar">#17a7a7</Color>

</ResourceDictionary>

深色主题:

<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
                    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                    x:Class="App.Views.Themes.DarkTheme"
                    xmlns:converters="clr-namespace:App.Services.Helper;assembly=App.Services">

  <!-- bootm bar background color -->
    <Color x:Key="BottomBar">#292a2a</Color>

</ResourceDictionary>

两个主题都工作正常,但我只需要根据用户更改底部栏颜色level.Its 仅适用于浅色主题。

条件是:

if(memeberlevel =="Basic"){
  //need to change bottom bar color as green
}
else if(memeberlevel =="Intermediate")
{
   //need to change bottom bar color as silver
}
else
{
  //need to change bottom bar color as gold
}

我如何在

的 Light 主题资源字典中应用此条件

 <Color x:Key="BottomBar">#17a7a7</Color>

这里我需要根据用户等级x:Key="BottomBar"设置绿色、银色和金色

感谢快速帮助。提前致谢

我觉得你可以改成这样

App.Current.Resources["BottomBar"] = Color.Green;

您可以在您的代码中执行此操作,而不是在资源字典中通过有条件地将颜色绑定到您的视图模型。如何访问资源颜色的示例:

(Color)Application.Current.Resources["BottomBar"]

您可以定义几种颜色来反映资源字典中的记忆级别。如果你只需要深色主题,那么在深色主题资源字典中将它们定义为不同的颜色,并在浅色主题中保持相同。