Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

Visual Studio 2012 Metro Styles for WPF

, 9 Dec 2012 CPOL
Black Metro Styles for Button, ListBox, Menu, ScrollBar, TabControl, TextBox, ComboBox, DataGrid and GroupBox
demo.zip
demo
MahApps.Metro.dll
Selen.Wpf.Core.dll
Selen.Wpf.DemoApplication.exe
Selen.Wpf.GenericAppTree.Contracts.dll
Selen.Wpf.GenericAppTree.dll
Selen.Wpf.SystemStyles.dll
System.Windows.Interactivity.dll
source.zip
source
lib
MahApps.Metro.dll
System.Windows.Interactivity.dll
Selen.Wpf.Core
Properties
Settings.settings
Selen.Wpf.Core.csproj.user
Selen.Wpf.Key.snk
Selen.Wpf.DemoApplication
Images
SplashScreen.png
standard.png
Properties
Settings.settings
Selen.Wpf.GenericAppTree.Contracts
Properties
Selen.Wpf.Key.snk
Selen.Wpf.GenericAppTree
Properties
Selen.Wpf.Key.snk
Selen.Wpf.SystemStyles
Actions
Properties
Settings.settings
Selen.Wpf.Key.snk
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/Selen.Wpf.Core;component/Resources.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    <Style TargetType="{x:Type Menu}" x:Key="StandardMenu">
        <Style.Resources>
            <Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" TargetType="Separator">
                <Setter Property="Height" Value="1"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Separator">
                            <Border BorderBrush="{StaticResource MenuSeparatorBorderBrush}" BorderThickness="1" Margin="25,0,0,0"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="Foreground" Value="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Menu}}}"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type MenuItem}">
                            <!--Border 1-->
                            <Border x:Name="Border" Background="Transparent" BorderBrush="Transparent" 
                                    BorderThickness="1" SnapsToDevicePixels="False">
                                <Grid x:Name="Grid">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition x:Name="Col0" MinWidth="17" Width="Auto" 
                                                          SharedSizeGroup="MenuItemIconColumnGroup"/>
                                        <ColumnDefinition Width="Auto" SharedSizeGroup="MenuTextColumnGroup"/>
                                        <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup"/>
                                        <ColumnDefinition x:Name="Col3" Width="14"/>
                                    </Grid.ColumnDefinitions>
                                    <ContentPresenter Grid.Column="0" x:Name="Icon" VerticalAlignment="Center" 
                                                      ContentSource="Icon"/>
                                    <ContentPresenter Grid.Column="1" Margin="{TemplateBinding Padding}" 
                                                      x:Name="HeaderHost" RecognizesAccessKey="True" 
                                                      ContentSource="Header" VerticalAlignment="Center"/>
                                    <ContentPresenter Grid.Column="2" Margin="8,1,8,1" x:Name="IGTHost" 
                                                      ContentSource="InputGestureText" VerticalAlignment="Center"/>
                                    <Grid Grid.Column="3" Margin="4,0,6,0" x:Name="ArrowPanel" VerticalAlignment="Center">
                                        <Path x:Name="ArrowPanelPath" HorizontalAlignment="Right" VerticalAlignment="Center" 
                                              Fill="{TemplateBinding Foreground}" Data="M0,0 L0,8 L4,4 z"/>
                                    </Grid>
                                    <Popup IsOpen="{Binding Path=IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" 
                                           Placement="Right" HorizontalOffset="-1" x:Name="SubMenuPopup" Focusable="false"
                                           PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}"
                                           AllowsTransparency="True">
                                        <Grid Margin="0,0,5,5">
                                            <!--Border 2-->
                                            <Border x:Name="SubMenuBorder" 
                                                    BorderBrush="{StaticResource MenuSeparatorBorderBrush}"
                                                    BorderThickness="1" Background="{StaticResource SubmenuItemBackground}" 
                                                    SnapsToDevicePixels="True">
                                                <Grid x:Name="SubMenu" Grid.IsSharedSizeScope="True" Margin="2">
                                                    <StackPanel IsItemsHost="True" 
                                                                KeyboardNavigation.DirectionalNavigation="Cycle"/>
                                                </Grid>
                                                <Border.Effect>
                                                    <DropShadowEffect ShadowDepth="2" Color="Black"/>
                                                </Border.Effect>
                                            </Border>
                                            <!--Border 3-->
                                            <Border Margin="1,0,0,0" x:Name="TransitionBorder" Width="0" Height="2" 
                                                    VerticalAlignment="Top" HorizontalAlignment="Left" 
                                                    Background="{StaticResource SubmenuItemBackground}" SnapsToDevicePixels="False"
                                                    BorderThickness="1" BorderBrush="{StaticResource SubmenuItemBackground}"/>
                                        </Grid>
                                    </Popup>
                                </Grid>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="Role" Value="TopLevelHeader">
                                    <Setter Property="Padding" Value="6,0,6,2"/>
                                    <Setter TargetName="SubMenuPopup" Property="Placement" Value="Bottom"/>
                                    <Setter TargetName="Col0" Property="MinWidth" Value="0"/>
                                    <Setter TargetName="Col3" Property="Width" Value="Auto"/>
                                    <Setter TargetName="Icon" Property="Visibility" Value="Collapsed"/>
                                    <Setter TargetName="IGTHost" Property="Visibility" Value="Collapsed" />
                                    <Setter TargetName="ArrowPanel" Property="Visibility" Value="Collapsed"/>
                                    <Setter TargetName="SubMenuBorder" Property="BorderThickness" Value="1,1,1,1"/>
                                    <Setter TargetName="SubMenu" Property="Margin" Value="2,3,2,2"/>
                                    <Setter TargetName="TransitionBorder" Property="Width" Value="{Binding ActualWidth, ElementName=Grid}"/>
                                </Trigger>
                                <Trigger Property="Role" Value="TopLevelItem">
                                    <Setter Property="Padding" Value="6,0,6,2"/>
                                    <Setter TargetName="Col0" Property="MinWidth" Value="0"/>
                                    <Setter TargetName="Col3" Property="Width" Value="Auto"/>
                                    <Setter TargetName="Icon" Property="Visibility" Value="Collapsed"/>
                                    <Setter TargetName="IGTHost" Property="Visibility" Value="Collapsed"/>
                                    <Setter TargetName="ArrowPanel" Property="Visibility" Value="Collapsed"/>
                                </Trigger>
                                <Trigger Property="Role" Value="SubmenuHeader">
                                    <Setter Property="DockPanel.Dock" Value="Top"/>
                                    <Setter Property="Padding" Value="10,3,0,3"/>
                                    <Setter TargetName="Border" Property="MinHeight" Value="22"/>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource SubmenuItemBackground}"/>
                                </Trigger>
                                <Trigger Property="Role" Value="SubmenuItem">
                                    <Setter Property="DockPanel.Dock" Value="Top"/>
                                    <Setter Property="Padding" Value="10,3,0,3"/>
                                    <Setter TargetName="Border" Property="MinHeight" Value="22"/>
                                    <Setter TargetName="ArrowPanel" Property="Visibility" Value="Collapsed"/>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource SubmenuItemBackground}"/>
                                </Trigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsHighlighted" Value="true"/>
                                        <Condition Property="Role" Value="TopLevelHeader"/>
                                    </MultiTrigger.Conditions>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource MenuItemHighlightedBackground}"/>
                                </MultiTrigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsHighlighted" Value="true"/>
                                        <Condition Property="Role" Value="TopLevelItem"/>
                                    </MultiTrigger.Conditions>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource MenuItemHighlightedBackground}"/>
                                </MultiTrigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsHighlighted" Value="true"/>
                                        <Condition Property="Role" Value="SubmenuHeader"/>
                                    </MultiTrigger.Conditions>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource SubmenuItemBackgroundHighlighted}"/>
                                </MultiTrigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsHighlighted" Value="true"/>
                                        <Condition Property="Role" Value="SubmenuItem"/>
                                    </MultiTrigger.Conditions>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource SubmenuItemBackgroundHighlighted}"/>
                                </MultiTrigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsSubmenuOpen" Value="true"/>
                                        <Condition Property="Role" Value="TopLevelHeader"/>
                                    </MultiTrigger.Conditions>
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource SubmenuItemBackground}"/>
                                    <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource MenuSeparatorBorderBrush}"/>
                                    <Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0"/>
                                </MultiTrigger>
                                <Trigger Property="IsSubmenuOpen" Value="true">
                                    <Setter TargetName="ArrowPanelPath" Property="Fill" Value="{StaticResource BackgroundSelected}"/>
                                </Trigger>
                                <Trigger Property="IsSuspendingPopupAnimation" Value="true">
                                    <Setter TargetName="SubMenuPopup" Property="PopupAnimation" Value="None"/>
                                </Trigger>
                                <Trigger Property="Icon" Value="{x:Null}">
                                    <Setter TargetName="Icon" Property="Visibility" Value="Collapsed"/>
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter Property="Foreground" Value="{StaticResource MenuDisabledForeground}"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
        <Setter Property="Background" Value="{StaticResource LightBackground}"/>
        <Setter Property="Foreground" Value="{StaticResource Foreground}"/>
    </Style>
</ResourceDictionary>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Winfried Lötzsch
Student
Germany Germany
I´m a student and hobby programmer (mostly C#) from Germany.
For those German guys, who might be looking for a translated version of my stuff, I´m running a blog.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141220.1 | Last Updated 9 Dec 2012
Article Copyright 2012 by Winfried Lötzsch
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid