Как использовать правильные цвета системы Windows?

Я хочу использовать XAML для стилизации кнопки WPF, чтобы выглядеть как текст "Миксер" и "Изменить дату и время..." этих всплывающих окон области уведомлений Windows 7.

Определяет ли свойство SystemColors этот цвет? Что?

<Setter Property="Foreground"
        Value="{DynamicResource {x:Static SystemColors.????}}" />

Windows 7 Notification area flyout

Ответ 1

Лучший метод, который я нашел, - эксперимент и угадывание.

Я создал небольшую утилиту для визуализации этих цветов.

Интерфейс

System.Windows.SystemColors

XAML

<Window x:Class="SystemColors1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="System.Windows.SystemColors" Height="350" Width="525">
    <Window.Resources>
        <DataTemplate x:Key="CellColor">
            <DockPanel>
                <TextBlock>
                    <TextBlock.Background>
                        <SolidColorBrush Color="{Binding Path=Color}" />
                    </TextBlock.Background>
                    <TextBlock.Text> 
                        &#160;&#160;&#160;&#160;&#160;
                        &#160;&#160;&#160;&#160;&#160;
                        &#160;&#160;&#160;&#160;&#160;
                    </TextBlock.Text>
                </TextBlock>
            </DockPanel>
        </DataTemplate>
    </Window.Resources>
    <Grid>
        <ListView Grid.Row="1"
                  Name="SystemColorsList"
                  ItemsSource="{Binding}">
            <ListView.View>
                <GridView AllowsColumnReorder="True">
                    <GridViewColumn CellTemplate="{StaticResource CellColor}"
                                    Header="Color"
                                    Width="Auto"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Name}"
                                    Header="Name"
                                    Width="Auto"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

С#

using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
using System.Reflection;

namespace SystemColors1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            List<ColorAndName> l = new List<ColorAndName>();

            foreach (PropertyInfo i in typeof(System.Windows.SystemColors).GetProperties())
            {
                if (i.PropertyType == typeof(Color))
                {
                    ColorAndName cn = new ColorAndName();
                    cn.Color = (Color)i.GetValue(new Color(), BindingFlags.GetProperty, null, null, null);
                    cn.Name = i.Name;
                    l.Add(cn);
                }
            }

            SystemColorsList.DataContext = l;
        }
    }

    class ColorAndName
    {
        public Color Color { get; set; }
        public string Name { get; set; }
    }
}

Ответ 2

Отметьте эту ссылку SystemColors и, в частности, цвета темы Aero.

Не очевидно, какое имя цвета будет использовать этот текст, но, пытаясь его заметить, похоже, что HighlightBrush или MenuHighlightBrush могут быть кандидатами...

Ответ 4

Очень сложно сравнивать цвета на глаз!

Если вы сделаете снимок экрана (кнопка Prt Scr на клавиатуре), вы можете вставить его в mspaint и использовать капельницу для глаз, чтобы получить фактические значения цвета.

Трюк в тексте с псевдонимом, но я прочитал цвет текста на скриншоте как R, G, B = 0,102,204, а HotTrackColor - R, G, B = 0,102,203

Как я уже сказал, разница может быть связана с наложением на текст.

Примечание: После нажатия с помощью инструмента Eye Dropper вам может потребоваться "Изменить цвета", чтобы увидеть фактические значения цвета. В любом случае, вы делаете win7.