代码之家  ›  专栏  ›  技术社区  ›  Joan Venge

如何在Xaml值字段中设置自定义颜色值?

  •  35
  • Joan Venge  · 技术社区  · 14 年前

    所以我有一些这样的XAML:

    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
        <Setter Property="Background" Value="Red"></Setter>
    </Trigger>
    

    我如何设置颜色 Red 250 200 150 ? 我试过了 Color 250 200 150 ,和 250 200 150个 ,但不起作用。有什么想法吗?

    3 回复  |  直到 6 年前
        1
  •  51
  •   David Yaw    14 年前

    使用HTML样式的颜色。

        <Trigger Property="ItemsControl.AlternationIndex" Value="2">
            <Setter Property="Background" Value="#FF0000"></Setter>
        </Trigger>
    

    或者,如果希望alpha透明度:

        <Trigger Property="ItemsControl.AlternationIndex" Value="2">
            <Setter Property="Background" Value="#80FF0000"></Setter>
        </Trigger>
    

    或者使用示例颜色250200150:

        <Trigger Property="ItemsControl.AlternationIndex" Value="2">
            <Setter Property="Background" Value="#FAC896"></Setter>
        </Trigger>
    
        2
  •  19
  •   Fredrik Hedblad    12 年前

    <Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
        <Setter Property="Background" Value="sc#1.0,0.7,1.0,0.5"></Setter> 
    </Trigger>
    

    要使用ARGB值,我们必须使用这个,不要太直接

    <Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
        <Setter Property="Background">
            <Setter.Value>
                <SolidColorBrush>
                    <SolidColorBrush.Color>
                        <Color A="255" R="250" G="200" B="150"/>
                    </SolidColorBrush.Color>
                </SolidColorBrush>
            </Setter.Value>
        </Setter> 
    </Trigger> 
    

    更新
    你也可以使用自定义 MarkupExtension

    <Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
        <Setter Property="Background" Value="{markup:BrushFromArgb 255, 250, 200, 150}"/>
    </Trigger>
    

    BrushFromArgbExtension

    public class BrushFromArgbExtension : MarkupExtension
    {
        public BrushFromArgbExtension() { }
        public BrushFromArgbExtension(byte a, byte r, byte g, byte b)
        {
            A = a;
            R = r;
            G = g;
            B = b;
        }
    
        public byte A { get; set; }
        public byte R { get; set; }
        public byte G { get; set; }
        public byte B { get; set; }
    
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return new SolidColorBrush(Color.FromArgb(A, R, G, B));
        }
    }
    

    以及类似的 标记扩展 Color

    <SolidColorBrush Color="{markup:FromArgb 255, 255, 200, 150}"/>
    

    来自argbextension

    public class FromArgbExtension : MarkupExtension
    {
        public FromArgbExtension() { }
        public FromArgbExtension(byte a, byte r, byte g, byte b)
        {
            A = a;
            R = r;
            G = g;
            B = b;
        }
    
        public byte A { get; set; }
        public byte R { get; set; }
        public byte G { get; set; }
        public byte B { get; set; }
    
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return Color.FromArgb(A, R, G, B);
        }
    }
    
        3
  •  2
  •   Nathaniel Ruiz    6 年前

    可以直接将XAML控件元素的“background”属性设置为十六进制值。

    <Button Background="#292929">
    

    如果你愿意的话,你也可以在开始的时候添加alpha。

    <Button Background="#55292929">
    

    了解更多 here