VS style tabs

This commit is contained in:
Rikki Tooley 2014-11-06 00:40:22 +00:00
parent a8d28159d4
commit 7f102820da
7 changed files with 283 additions and 19 deletions

View File

@ -8,16 +8,36 @@
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary
Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/accents/Lime.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Styles.xaml" />
<ResourceDictionary Source="Resources/SyroTabControl.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<SolidColorBrush x:Key="SyroBrush" Color="#C0D73B"/>
<Color x:Key="HighlightColor">#C0D73B</Color>
<Color x:Key="SyroColour">#C0D73B</Color>
<SolidColorBrush x:Key="SyroBrush" Color="{StaticResource SyroColour}"/>
<SolidColorBrush x:Key="SyroWindowTitleBrush" Color="#222222"/>
<SolidColorBrush x:Key="BackgroundSelected" Color="{StaticResource SyroColour}" />
<SolidColorBrush x:Key="ForegroundSelected" Color="#222" />
<Style x:Key="SyroHeaderFontStyle" TargetType="TextBlock">
<Setter Property="FontSize" Value="{StaticResource HeaderFontSize}"/>
<Setter Property="FontFamily" Value="{StaticResource HeaderFontFamily}"/>
<Setter Property="Foreground" Value="{StaticResource Foreground}"/>
</Style>
<Style x:Key="SyroSubHeaderFontStyle" TargetType="TextBlock" BasedOn="{StaticResource SyroHeaderFontStyle}">
<Setter Property="FontSize" Value="{StaticResource SubHeaderFontSize}"/>
</Style>
<Style x:Key="SyroNormalFontStyle" TargetType="TextBlock" BasedOn="{StaticResource SyroHeaderFontStyle}">
<Setter Property="FontSize" Value="{StaticResource NormalFontSize}"/>
<Setter Property="FontFamily" Value="{StaticResource ContentFontFamily}"/>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>

View File

@ -11,5 +11,10 @@ public partial class App : Application
private static ViewModelLocator _kernel;
public static ViewModelLocator Kernel { get { return _kernel; } }
public App()
{
_kernel = new ViewModelLocator();
}
}
}

View File

@ -111,6 +111,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Resources\SyroTabControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Pages\MainPage.xaml.cs">

View File

@ -21,17 +21,10 @@
VerticalAlignment="Center">
<Canvas Width="90.736" Height="90.721">
<Canvas>
<!-- Layer 1/<Group>/<Group>/<Compound Path> -->
<Path
Data="F1 M 56.448,79.634 C 55.968,78.438 55.517,77.263 55.027,76.106 C 53.894,73.441 53.273,70.678 53.310,67.771 C 53.339,65.526 53.398,63.278 53.305,61.038 C 53.244,59.574 53.072,58.087 52.712,56.669 C 51.937,53.603 49.659,51.876 46.920,50.649 C 45.775,50.137 44.618,49.653 43.368,49.114 C 43.899,48.766 44.350,48.469 44.915,48.100 C 43.852,47.797 42.923,47.533 41.889,47.238 C 42.163,47.043 42.327,46.925 42.493,46.807 C 46.762,43.790 49.134,39.580 49.554,34.470 C 50.250,25.989 46.913,19.203 40.042,14.254 C 35.876,11.254 31.149,9.996 26.050,11.080 C 18.830,12.615 13.802,18.618 13.296,26.055 C 12.916,31.638 14.372,36.709 17.777,41.142 C 21.825,46.413 27.075,49.480 33.884,49.478 C 36.062,49.478 38.134,48.970 40.316,48.081 C 40.044,49.197 39.809,50.160 39.543,51.255 C 40.297,50.826 40.907,50.481 41.403,50.198 C 43.232,51.140 44.961,52.030 46.687,52.918 C 49.058,54.137 50.976,55.807 51.658,58.481 C 52.019,59.895 52.205,61.382 52.250,62.844 C 52.340,65.674 52.195,68.513 52.293,71.343 C 52.404,74.540 53.738,77.417 54.857,80.401 C 55.265,80.220 55.589,80.083 55.907,79.934 C 56.062,79.860 56.208,79.767 56.448,79.634 Z M 90.736,90.721 C 60.496,90.721 30.255,90.721 0.000,90.721 C 0.000,60.492 0.000,30.259 0.000,0.000 C 30.235,0.000 60.486,0.000 90.736,0.000 C 90.736,30.232 90.736,60.475 90.736,90.721 Z" />
<!-- Layer 1/<Group>/<Group>/<Compound Path> -->
<Path Data="F1 M 56.448,79.634 C 55.968,78.438 55.517,77.263 55.027,76.106 C 53.894,73.441 53.273,70.678 53.310,67.771 C 53.339,65.526 53.398,63.278 53.305,61.038 C 53.244,59.574 53.072,58.087 52.712,56.669 C 51.937,53.603 49.659,51.876 46.920,50.649 C 45.775,50.137 44.618,49.653 43.368,49.114 C 43.899,48.766 44.350,48.469 44.915,48.100 C 43.852,47.797 42.923,47.533 41.889,47.238 C 42.163,47.043 42.327,46.925 42.493,46.807 C 46.762,43.790 49.134,39.580 49.554,34.470 C 50.250,25.989 46.913,19.203 40.042,14.254 C 35.876,11.254 31.149,9.996 26.050,11.080 C 18.830,12.615 13.802,18.618 13.296,26.055 C 12.916,31.638 14.372,36.709 17.777,41.142 C 21.825,46.413 27.075,49.480 33.884,49.478 C 36.062,49.478 38.134,48.970 40.316,48.081 C 40.044,49.197 39.809,50.160 39.543,51.255 C 40.297,50.826 40.907,50.481 41.403,50.198 C 43.232,51.140 44.961,52.030 46.687,52.918 C 49.058,54.137 50.976,55.807 51.658,58.481 C 52.019,59.895 52.205,61.382 52.250,62.844 C 52.340,65.674 52.195,68.513 52.293,71.343 C 52.404,74.540 53.738,77.417 54.857,80.401 C 55.265,80.220 55.589,80.083 55.907,79.934 C 56.062,79.860 56.208,79.767 56.448,79.634 Z M 90.736,90.721 C 60.496,90.721 30.255,90.721 0.000,90.721 C 0.000,60.492 0.000,30.259 0.000,0.000 C 30.235,0.000 60.486,0.000 90.736,0.000 C 90.736,30.232 90.736,60.475 90.736,90.721 Z" />
<Path Fill="{StaticResource SyroBrush}"
Data="F1 M 18.962,35.378 C 19.113,35.270 19.265,35.161 19.417,35.052 C 16.973,30.044 17.181,25.160 19.968,20.319 C 19.560,20.450 19.202,20.614 18.994,20.891 C 16.015,24.862 15.884,30.397 18.636,34.568 C 18.793,34.806 18.855,35.107 18.962,35.378 Z M 56.448,79.634 C 56.209,79.767 56.062,79.860 55.907,79.932 C 55.590,80.080 55.265,80.218 54.857,80.399 C 53.738,77.416 52.404,74.539 52.293,71.341 C 52.195,68.511 52.340,65.672 52.250,62.842 C 52.205,61.380 52.020,59.893 51.658,58.479 C 50.976,55.805 49.058,54.135 46.687,52.916 C 44.960,52.028 43.232,51.139 41.403,50.196 C 40.907,50.478 40.297,50.824 39.543,51.253 C 39.810,50.158 40.044,49.195 40.316,48.079 C 38.134,48.969 36.063,49.476 33.884,49.476 C 27.074,49.478 21.825,46.412 17.777,41.140 C 14.372,36.707 12.916,31.637 13.296,26.053 C 13.803,18.616 18.830,12.614 26.050,11.078 C 31.149,9.994 35.876,11.251 40.042,14.252 C 46.913,19.201 50.250,25.987 49.554,34.468 C 49.134,39.579 46.762,43.789 42.493,46.805 C 42.327,46.922 42.163,47.040 41.889,47.236 C 42.923,47.531 43.853,47.796 44.915,48.098 C 44.351,48.467 43.899,48.764 43.368,49.112 C 44.618,49.651 45.775,50.135 46.920,50.647 C 49.659,51.874 51.937,53.600 52.712,56.667 C 53.071,58.085 53.244,59.572 53.305,61.036 C 53.398,63.276 53.339,65.524 53.310,67.769 C 53.273,70.676 53.894,73.439 55.027,76.104 C 55.517,77.263 55.967,78.438 56.448,79.634 Z" />
<!-- Layer 1/<Group>/<Group>/<Path> -->
<Path
Data="F1 M 18.962,35.378 C 18.856,35.107 18.794,34.806 18.637,34.568 C 15.885,30.398 16.015,24.862 18.995,20.891 C 19.203,20.614 19.561,20.450 19.969,20.319 C 17.182,25.160 16.973,30.044 19.418,35.052 C 19.265,35.161 19.113,35.270 18.962,35.378 Z" />
<Path Data="F1 M 18.962,35.378 C 18.856,35.107 18.794,34.806 18.637,34.568 C 15.885,30.398 16.015,24.862 18.995,20.891 C 19.203,20.614 19.561,20.450 19.969,20.319 C 17.182,25.160 16.973,30.044 19.418,35.052 C 19.265,35.161 19.113,35.270 18.962,35.378 Z" />
</Canvas>
</Canvas>
</Viewbox>

View File

@ -1,10 +1,14 @@
namespace IF.Lastfm.Syro
using System;
namespace IF.Lastfm.Syro
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
RootFrame.NavigationService.Navigate(new Uri("/Pages/MainPage.xaml", UriKind.Relative));
}
}
}

View File

@ -5,9 +5,34 @@
xmlns:local="using:IF.Lastfm.Dev.Syro.Pages"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
mc:Ignorable="d"
d:DataContext="{Binding Source=MainViewModel}">
<Grid>
<TabControl Style="{StaticResource SyroTabControlStyle}">
<TabItem Header="Request Builder">
<Border Padding="28,10">
<Grid>
<TextBlock Style="{StaticResource SyroNormalFontStyle}"
Foreground="{StaticResource GrayNormalBrush}">Coming soon...</TextBlock>
</Grid>
</Border>
</TabItem>
<TabItem Header="Progress Report">
<Border Padding="28,10">
<Grid>
<Button VerticalAlignment="Center"
HorizontalAlignment="Center"
Command="{Binding GenerateProgressReportCommand}">
<TextBlock Style="{StaticResource SyroNormalFontStyle}"
Margin="10,5">Generate report</TextBlock>
</Button>
</Grid>
</Border>
</TabItem>
</TabControl>
</Grid>
</Page>

View File

@ -0,0 +1,213 @@
<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:,,,/MahApps.Metro;component/Styles/VS/Colors.xaml" />
<ResourceDictionary>
<!-- General -->
<Color x:Key="SyroColour">#C0D73B</Color>
<SolidColorBrush x:Key="BackgroundHighlighted" Color="#54545C" />
<SolidColorBrush x:Key="BorderBrushHighlighted" Color="#6A6A75" />
<SolidColorBrush x:Key="BackgroundSelected" Color="{StaticResource SyroColour}" />
<SolidColorBrush x:Key="BorderBrushSelected" Color="{StaticResource SyroColour}" />
<SolidColorBrush x:Key="BackgroundNormal" Color="#3F3F46" />
<SolidColorBrush x:Key="BorderBrushNormal" Color="#54545C" />
<!-- Close Button -->
<SolidColorBrush x:Key="CloseButtonBackgroundHighlighted" Color="#39ADFB" />
<SolidColorBrush x:Key="CloseButtonBackgroundPressed" Color="#084E7D" />
<SolidColorBrush x:Key="CloseButtonStroke" Color="#AAFFFFFF" />
<SolidColorBrush x:Key="CloseButtonStrokeHighlighted" Color="#FFFFFF" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="SyroTabControlStyle"
TargetType="{x:Type TabControl}">
<Style.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="FocusVisualStyle"
Value="{x:Null}" />
<Setter Property="Background"
Value="Transparent" />
<Setter Property="Foreground"
Value="#111" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Grid Margin="10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="18"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!--<TextBlock Text="@"
HorizontalAlignment="Left"/>-->
<TextBlock Text="{Binding}"
Grid.Column="1"
FontSize="13"
LineHeight="13"/>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid Height="30"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="true">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0"
Width="Auto"
HorizontalAlignment="Center"
VerticalAlignment="Center"
ContentSource="Header" />
<!--<Button Grid.Column="1"
Width="15"
Height="15"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Command="{Binding Path=CloseCommand}"
DockPanel.Dock="Right">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Background"
Value="Transparent" />
<Setter Property="Cursor"
Value="Hand" />
<Setter Property="Focusable"
Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Background="{TemplateBinding Background}">
<Path x:Name="ButtonPath"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M0,0 L1,1 M0,1 L1,0"
Stretch="Uniform"
Stroke="{DynamicResource CloseButtonStroke}"
StrokeEndLineCap="Flat"
StrokeStartLineCap="Flat"
StrokeThickness="2" />
</Grid>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TabItem}}"
Value="false" />
<Condition
Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TabItem}}"
Value="false" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Visibility"
Value="Hidden" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<Trigger Property="IsEnabled"
Value="False">
<Setter Property="Visibility"
Value="Hidden" />
</Trigger>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="{DynamicResource CloseButtonBackgroundHighlighted}" />
<Setter TargetName="ButtonPath"
Property="Stroke"
Value="{DynamicResource CloseButtonStrokeHighlighted}" />
</Trigger>
<Trigger Property="IsPressed"
Value="true">
<Setter Property="Background"
Value="{DynamicResource CloseButtonBackgroundPressed}" />
<Setter TargetName="ButtonPath"
Property="Stroke"
Value="{DynamicResource CloseButtonStroke}" />
<Setter TargetName="ButtonPath"
Property="Margin"
Value="2.5,2.5,1.5,1.5" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
</Button>-->
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected"
Value="false">
<Setter Property="Background"
Value="Transparent" />
</Trigger>
<Trigger Property="IsMouseOver"
Value="true">
<Setter Property="Background"
Value="{DynamicResource BorderBrushSelected}" />
</Trigger>
<Trigger Property="IsSelected"
Value="true">
<Setter Property="Background"
Value="{DynamicResource BackgroundSelected}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style.Resources>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid KeyboardNavigation.TabNavigation="Local">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Background="Transparent"
BorderBrush="{DynamicResource BackgroundSelected}"
BorderThickness="0,0,0,1">
<TabPanel Name="HeaderPanel"
Margin="0,0,0,-1"
Panel.ZIndex="1"
IsItemsHost="True"
KeyboardNavigation.TabIndex="1" />
</Border>
<Border Grid.Row="1"
Background="{DynamicResource Background}" />
<ContentPresenter Name="PART_SelectedContentHost"
Grid.Row="1"
ContentSource="SelectedContent" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="ClosableTabItemTemplate">
<DockPanel>
<ContentPresenter VerticalAlignment="Center"
Content="{Binding DisplayName}">
<ContentPresenter.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground"
Value="{StaticResource Foreground}" />
<Setter Property="FontSize"
Value="20" />
</Style>
</ContentPresenter.Resources>
</ContentPresenter>
</DockPanel>
</DataTemplate>
<!-- This template explains how to render the 'Workspace' content area in the main window. -->
<DataTemplate x:Key="WorkspacesTemplate">
<TabControl Margin="0"
IsSynchronizedWithCurrentItem="True"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
ItemsSource="{Binding}"
Style="{DynamicResource StandardTabControl}" />
</DataTemplate>
</ResourceDictionary>