【问题标题】:How do I pick a static/dynamic resource color in a color?如何在颜色中选择静态/动态资源颜色?
【发布时间】:2020-01-03 14:05:21
【问题描述】:

如何在这样的颜色中选择静态/动态资源颜色?

<ResourceDictionary ...
  <Color x:Key="RedColor">#C3404D</Color>
  ...

  <Color>{StaticResource RedColor}</Color>

这是我的代码

<ResourceDictionary ...>
    <Color x:Key="PrimaryColor">#507EA9</Color>
    <Color x:Key="SecondaryColor">#A76FBB</Color>
    <Color x:Key="PrimaryDarkColor">#112951</Color>
    <Color x:Key="SecondaryDarkColor">#75428F</Color>
    <Color x:Key="GreenColor">#63B743</Color>
    <Color x:Key="RedColor">#C3404D</Color>

    <Style TargetType="chart:SfChart" x:Key="ChartPie1">
        <Setter Property="ColorModel">
            <Setter.Value>
                <chart:ChartColorCollection>
                    <Color>#507EA9</Color>
                    <Color>#A76FBB</Color>
                    <Color>#112951</Color>
                    <Color>#63B743</Color>
                    <Color>#75428F</Color>
                    <Color>#C3F3A0</Color>
                </chart:ChartColorCollection>
            </Setter.Value>
        </Setter>
    </Style>

    <Style TargetType="chart:SfChart" x:Key="ChartPie2">
        <Setter Property="ColorModel">
            <Setter.Value>
                <chart:ChartColorCollection>
                    <Color>#75428F</Color>
                    <Color>#63B743</Color>
                    <Color>#A76FBB</Color>
                    <Color>#112951</Color>
                    <Color>#C3F3A0</Color>
                    <Color>#507EA9</Color>
                </chart:ChartColorCollection>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

我想知道是否可以不必一遍又一遍地定义颜色?只需写如下内容:

<chart:ChartColorCollection>
    <Color>{StaticResource PrimaryColor}</Color>
    <Color>{StaticResource SecondaryColor}</Color>
    ...
</chart:ChartColorCollection>

【问题讨论】:

  • 选择颜色是什么意思?您的代码不正确。 ResourceDictionary 必须有一个键。
  • 我想获得一种颜色,该颜色已经定义为插入到 ResourceDictionary 中的集合中。我知道代码不正确。我是否必须每次都编写 RGB 代码,还是可以以某种方式调用 StaticResource?
  • @lise-lotte,我不想一遍又一遍地写所有的 RGB。有没有可能,根据你的描述,我不确定你想做什么,所以你能在这里提供一些代码来描述详细信息吗?

标签: xamarin.forms resourcedictionary


【解决方案1】:

根据您的评论,您可以将样式中的颜色定义为静态资源并在代码中重用它们。示例:

<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

    <Color x:Key="PrimaryColor">#373749</Color>
    <Color x:Key="SecondaryColor">#45455c</Color>

    <Style x:Key="TitleLabelStyle" TargetType="Label">
        <Setter Property="FontSize" Value="20" />
        <Setter Property="TextColor" Value="{StaticResource PrimaryColor}" />
    </Style>

</ResourceDictionary>

然后在您的 xaml 中,您可以像这样引用:

<StackLayout BackgroundColor="{StaticResource PrimaryColor}">

或风格:

<Label Style="{StaticResource TitleLabelStyle}" />

希望对你有帮助。

【讨论】:

  • 谢谢,但我认为我没有正确解释。我有一些这样的样式: 我不想一遍又一遍地写所有的 RGB。有可能吗?
  • 你为什么不像我提供的例子那样重用它?
  • 因为我对目标有一组颜色,而不仅仅是一种颜色。我想在以后更改主题时更改颜色。我已经用你在其他地方说的方式了。
  • 为什么不使用例如 {StaticResource PrimaryColor} 而不是定义的颜色?
猜你喜欢
  • 2016-08-09
  • 1970-01-01
  • 2015-07-28
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多