I want to use XAML to style a WPF button to look like the "Mixer" and "Change date and time settings..." text of these Windows 7 Notification area flyouts.
Does a property of SystemColors define that color? Which?
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.????}}" />
The best method I've found is experimentation and guessing.
I created a little utility to visualize these colors.
<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>
     
     
     
</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; }
}
}