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

Joa*_*nge 40 .net c# wpf xaml

所以我有一些像这样的XAML:

<Trigger Property="ItemsControl.AlternationIndex" Value="2">
    <Setter Property="Background" Value="Red"></Setter>
</Trigger>
Run Code Online (Sandbox Code Playgroud)

我如何可以设置颜色Red,喜欢的东西250 200 150?我试过了Color 250 200 150,250 200 150但是没有用.有任何想法吗?

Dav*_*Yaw 51

使用HTML样式的颜色.

    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
        <Setter Property="Background" Value="#FF0000"></Setter>
    </Trigger>
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要Alpha透明度:

    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
        <Setter Property="Background" Value="#80FF0000"></Setter>
    </Trigger>
Run Code Online (Sandbox Code Playgroud)

或者使用250,200,150的示例颜色:

    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
        <Setter Property="Background" Value="#FAC896"></Setter>
    </Trigger>
Run Code Online (Sandbox Code Playgroud)


Fre*_*lad 19

对不起,我错了.使用它的方法是浮点值范围从0到1.

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
    <Setter Property="Background" Value="sc#1.0,0.7,1.0,0.5"></Setter> 
</Trigger>
Run Code Online (Sandbox Code Playgroud)

要使用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> 
Run Code Online (Sandbox Code Playgroud)

更新
您还可以使用自定义MarkupExtension

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
    <Setter Property="Background" Value="{markup:BrushFromArgb 255, 250, 200, 150}"/>
</Trigger>
Run Code Online (Sandbox Code Playgroud)

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

类似的MarkupExtension也可以用于Color

<SolidColorBrush Color="{markup:FromArgb 255, 255, 200, 150}"/>
Run Code Online (Sandbox Code Playgroud)

FromArgbExtension

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Nat*_*uiz 6

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

<Button Background="#292929">
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您也可以在开头添加 alpha。

<Button Background="#55292929">
Run Code Online (Sandbox Code Playgroud)

在这里了解更多