Как установить пользовательские значения цветов в поле Xaml Value?
Итак, у меня есть несколько 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
, но не работает. Есть идеи?
Ответы
Ответ 1
Используйте цвета в стиле HTML.
<Trigger Property="ItemsControl.AlternationIndex" Value="2">
<Setter Property="Background" Value="#FF0000"></Setter>
</Trigger>
Или, если вам нужна альфа-прозрачность:
<Trigger Property="ItemsControl.AlternationIndex" Value="2">
<Setter Property="Background" Value="#80FF0000"></Setter>
</Trigger>
Или используя ваш пример цвета 250 200 150:
<Trigger Property="ItemsControl.AlternationIndex" Value="2">
<Setter Property="Background" Value="#FAC896"></Setter>
</Trigger>
Ответ 2
Извините, я ошибся здесь. Способ использования этого - с плавающей точкой в диапазоне от 0 до 1.
<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));
}
}
И аналогичный MarkupExtension
также можно использовать для Color
<SolidColorBrush Color="{markup:FromArgb 255, 255, 200, 150}"/>
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);
}
}
Ответ 3
Вы можете установить свойство background в элементе управления XAML, чтобы оно было шестнадцатеричным значением.
<Button Background="#292929">
И вы можете добавить альфа в начале, если хотите.
<Button Background="#55292929">
Узнайте больше здесь