如何用C#而不是XAML定义静态资源?

时间:2018-10-06 00:47:40

标签: xamarin xamarin.forms

我有此代码:

<ResourceDictionary>
   <Color x:Key="WordTextColor">#2196f3</Color>
</ResourceDictionary>

<Grid>
   <Grid.Resources>
      <Style TargetType="Grid">
         <Style TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource WordTextColor}" />
      </Style>

如何用C#编写代码

我还可以将此静态资源编码为字符串而不是颜色吗?

2 个答案:

答案 0 :(得分:1)

您可以有一个这样的帮助器类,您可以在其中定义所有颜色/值

 public static class Styles
    {
         private static Color _backgroundColor = Color.FromHex("151515");
         public static Color BackgroundColor => _backgroundColor;
    }

然后,在xaml中,您在标题中引用它:

xmlns:local="clr-namespace:YourProjectAssembly.YourName;assembly=YourProjectAssembly.YourName"

并使用它:

<Grid BackgroundColor="{x:Static local:Styles.BackgroundColor}"/>

答案 1 :(得分:-1)

可以在String值而不是Hexa值中设置颜色。
可以在Window.Resources或Grid.Resources中设置资源。

窗口级资源

<Window.Resources>
   <Color x:Key="TheBackgroundColor">#2196f3</Color>
</Window.Resources>

<Grid>
  <Style TargetType="Grid">
     <Style TargetType="Label">
        <Setter Property="TextColor" Value="{StaticResource TheBackgroundColor}" />
  </Style>
</Grid>

网格级别的资源

<Grid>
  <Grid.Resources>
     <Color x:Key="TheBackgroundColor">#2196f3</Color>
  </Grid.Resources>
  <Style TargetType="Grid">
     <Style TargetType="Label">
        <Setter Property="TextColor" Value="{StaticResource TheBackgroundColor}" />
  </Style>
</Grid>