Theme.Static.xaml (without compile, no perfomance difference with dynamic). +ThemeManager improvements.

This commit is contained in:
2017-08-31 15:55:40 +03:00
parent 9c2dc48ee2
commit 284cb40004
28 changed files with 6322 additions and 458 deletions

View File

@@ -5,6 +5,7 @@
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/brightsharp;component/themes/style.classic.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/theme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

View File

@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows;
namespace BrightSharp.Ui.Tests
{

View File

@@ -136,6 +136,14 @@
<Name>BrightSharp</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="pics\dogs.jpg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="pics\minjons.jpg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Media;

View File

@@ -1,16 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows;
namespace BrightSharp.Ui.Tests
{

View File

@@ -1,16 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows;
namespace BrightSharp.Ui.Tests
{

View File

@@ -29,7 +29,7 @@
<ex:MarkupExtensionProperties.Header>
<StackPanel Orientation="Horizontal">
<Label Foreground="Red">❖</Label>
<Label Foreground="White">BrightSharp.Toolkit Presentation ver.2</Label>
<Label Foreground="White">BrightSharp.Toolkit Presentation ver.2.1</Label>
<Label Foreground="Blue">❖</Label>
</StackPanel>
</ex:MarkupExtensionProperties.Header>
@@ -37,9 +37,9 @@
<Grid Margin="2" ClipToBounds="True">
<bsDiag:ZoomControl x:Name="zc" UseAnimation="True" ClipToBounds="False">
<ContentControl Style="{StaticResource DesignerItemStyle}"
<ContentControl Style="{DynamicResource DesignerItemStyle}"
Canvas.Left="1600" Canvas.Top="20" Width="300">
<GroupBox Style="{StaticResource ExpandrStyleGroupBox}">
<GroupBox Style="{DynamicResource ExpandrStyleGroupBox}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Label>Extended Frame</Label>
@@ -64,7 +64,7 @@
</Grid>
</GroupBox>
</ContentControl>
<ContentControl Style="{StaticResource DesignerItemStyle}"
<ContentControl Style="{DynamicResource DesignerItemStyle}"
Canvas.Left="10" Canvas.Top="20" Width="330">
<GroupBox Header="Common" Background="{DynamicResource GradientWindowBackgroundBrush}">
<Grid>
@@ -83,7 +83,7 @@
<TabItem Header="Tab2"/>
<TabItem Header="Tab3"/>
</TabControl>
<CheckBox HorizontalAlignment="Left" Style="{StaticResource SwitchCheckBoxStyle}" VerticalAlignment="Top" Margin="40,275,0,0" Content="SwitchCheckBoxStyle" Width="213" RenderTransformOrigin="0.5,0.5" Height="Auto" />
<CheckBox HorizontalAlignment="Left" Style="{DynamicResource SwitchCheckBoxStyle}" VerticalAlignment="Top" Margin="40,275,0,0" Content="SwitchCheckBoxStyle" Width="213" RenderTransformOrigin="0.5,0.5" Height="Auto" />
<TextBox Margin="40,304,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="246" Padding="3">
<ex:MarkupExtensionProperties.LeadingElement>L.El.</ex:MarkupExtensionProperties.LeadingElement>
<ex:MarkupExtensionProperties.TrailingElement>T.El.</ex:MarkupExtensionProperties.TrailingElement>
@@ -157,12 +157,12 @@
</Grid>
</GroupBox>
</ContentControl>
<ContentControl Style="{StaticResource DesignerItemStyle}"
<ContentControl Style="{DynamicResource DesignerItemStyle}"
Height="474" Width="442"
Padding="2,27,2,2"
Canvas.Left="350"
Canvas.Top="20">
<GroupBox Margin="0,-25,0,0" Style="{StaticResource ExpandrStyleGroupBox}" >
<GroupBox Margin="0,-25,0,0" Style="{DynamicResource ExpandrStyleGroupBox}" >
<GroupBox.Header>
<Label Content="Collections"/>
</GroupBox.Header>
@@ -241,11 +241,11 @@
</Grid>
</GroupBox>
</ContentControl>
<ContentControl Style="{StaticResource DesignerItemStyle}" bsDiag:VisualExtensions.CanRotate="False"
<ContentControl Style="{DynamicResource DesignerItemStyle}" bsDiag:VisualExtensions.CanRotate="False"
Padding="2,27,2,2"
Canvas.Left="850"
Canvas.Top="20" Width="700" Height="450">
<GroupBox Margin="0,-25,0,0" Style="{StaticResource ExpandrStyleGroupBox}" >
<GroupBox Margin="0,-25,0,0" Style="{DynamicResource ExpandrStyleGroupBox}" >
<GroupBox.Header>
<Label Content="Xaml RichTextBox (CanRotate=false)"/>
</GroupBox.Header>
@@ -261,11 +261,7 @@
<Run Text=" "/>
<Figure HorizontalAnchor="ColumnRight" Width="205">
<BlockUIContainer>
<Image UseLayoutRounding="True" d:DesignUseLayoutRounding="True">
<Image.Source>
<BitmapImage CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="http://minionomaniya.ru/wp-content/uploads/2016/01/%D0%BC%D0%B8%D0%BD%D1%8C%D0%BE%D0%BD%D1%8B-%D0%BF%D1%80%D0%B8%D0%BA%D0%BE%D0%BB%D1%8B-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8.jpg"/>
</Image.Source>
</Image>
<Image UseLayoutRounding="True" d:DesignUseLayoutRounding="True" Source="pack://siteoforigin:,,,/pics/minjons.jpg"/>
</BlockUIContainer>
</Figure>
<Run Text=" "/>
@@ -273,11 +269,7 @@
<Run Text=" "/>
<Figure HorizontalAnchor="ColumnRight" Width="230">
<BlockUIContainer>
<Image UseLayoutRounding="True" d:DesignUseLayoutRounding="True">
<Image.Source>
<BitmapImage CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="http://www.radionetplus.ru/uploads/posts/2013-12/1386011570_dogs-wallpaper-2.jpg"/>
</Image.Source>
</Image>
<Image UseLayoutRounding="True" d:DesignUseLayoutRounding="True" Source="pack://siteoforigin:,,,/pics/dogs.jpg"/>
</BlockUIContainer>
</Figure>
</Paragraph>
@@ -307,7 +299,7 @@
</RichTextBox>
</GroupBox>
</ContentControl>
<ContentControl Style="{StaticResource DesignerItemStyle}"
<ContentControl Style="{DynamicResource DesignerItemStyle}"
MaxHeight="300" Width="440" MaxWidth="700"
Padding="2,27,2,2"
Canvas.Left="350"
@@ -320,7 +312,7 @@
</Expander>
</ContentControl>
<ContentControl Width="294" Height="133" Background="{DynamicResource LightBrush}" Canvas.Left="850" Canvas.Top="550" Style="{StaticResource DesignerItemStyle}">
<ContentControl Width="294" Height="133" Background="{DynamicResource LightBrush}" Canvas.Left="850" Canvas.Top="550" Style="{DynamicResource DesignerItemStyle}">
<Border>
<StackPanel>
<TextBlock FontStyle="Italic"><Run Text="(Some elements hidden by LODZoom extension)"/></TextBlock>

View File

@@ -23,13 +23,9 @@ namespace BrightSharp.Ui.Tests
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Enum.IsDefined(typeof(ColorThemes), ThemeManager.Theme + 1))
{
ThemeManager.Theme = ThemeManager.Theme + 1;
}
else
{
ThemeManager.Theme = ColorThemes.Classic;
}
tb.Text = ThemeManager.Theme.ToString();
}

View File

@@ -1,6 +1,4 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;

View File

@@ -1,17 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Controls;
namespace BrightSharp.Ui.Tests
{

View File

@@ -1,17 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Controls;
namespace BrightSharp.Ui.Tests
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

View File

@@ -68,6 +68,9 @@
<Compile Include="Diagrams\Thumbs\ResizeThumb.cs" />
<Compile Include="Diagrams\Thumbs\RotateThumb.cs" />
<Compile Include="Extensions\WpfExtensions.cs" />
<Compile Include="Themes\Theme.cs">
<DependentUpon>Theme.xaml</DependentUpon>
</Compile>
<Compile Include="Themes\ThemeManager.cs" />
<Compile Include="Diagrams\ZoomControl.cs">
<SubType>Code</SubType>
@@ -86,7 +89,9 @@
</Page>
<Compile Include="Converters\ThicknessConverter.cs" />
<Compile Include="Extensions\MarkupExtensionProperties.cs" />
<Compile Include="Themes\Theme.cs" />
<None Include="Themes\Theme.Static.cs">
<DependentUpon>Theme.Static.xaml</DependentUpon>
</None>
<Page Include="Themes\Diagrams\DesignerItem.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -103,6 +108,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Themes\Style.Classic.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Themes\Style.DarkBlue.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -116,9 +125,13 @@
<SubType>Designer</SubType>
</Page>
<Page Include="Themes\Theme.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<None Include="Themes\Theme.Static.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</None>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">

View File

@@ -1,17 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BrightSharp.Controls
{

View File

@@ -58,23 +58,10 @@ namespace BrightSharp.Diagrams
var zoomChangedHandler = new RoutedEventHandler((sender, args) =>
{
var lodInfo = new LodInfo(GetLODZoom(element));
var transform = element.TransformToVisual(window) as MatrixTransform;
var scaleX = transform.Matrix.M11;
var newOpacity = (scaleX >= lodInfo.StartRange && scaleX <= lodInfo.EndRange) ? 1 : 0;
if (lodInfo.UseAnimation && args.RoutedEvent != FrameworkElement.LoadedEvent)
{
element.Visibility = Visibility.Visible;
var animation = new DoubleAnimation(newOpacity, TimeSpan.FromSeconds(.5));
element.BeginAnimation(UIElement.OpacityProperty, animation);
try {
ChangeVisibility(args, element, window);
}
else
{
element.Visibility = newOpacity == 1 ? Visibility.Visible : Visibility.Hidden;
element.Opacity = newOpacity;
catch (Exception) {
}
});
@@ -93,6 +80,25 @@ namespace BrightSharp.Diagrams
}
}
private static void ChangeVisibility(RoutedEventArgs args, FrameworkElement element, Window window) {
var lodInfo = new LodInfo(GetLODZoom(element));
var transform = element.TransformToVisual(window) as MatrixTransform;
var scaleX = transform.Matrix.M11;
var newOpacity = (scaleX >= lodInfo.StartRange && scaleX <= lodInfo.EndRange) ? 1 : 0;
if (lodInfo.UseAnimation && args.RoutedEvent != FrameworkElement.LoadedEvent) {
element.Visibility = Visibility.Visible;
var animation = new DoubleAnimation(newOpacity, TimeSpan.FromSeconds(.5));
element.BeginAnimation(UIElement.OpacityProperty, animation);
}
else {
element.Visibility = newOpacity == 1 ? Visibility.Visible : Visibility.Hidden;
element.Opacity = newOpacity;
}
}
sealed class LodInfo
{
public LodInfo(string lod)

View File

@@ -257,10 +257,7 @@
<GradientStop Offset="1" Color="#EFF3F3F3" />
</GradientStopCollection>
</LinearGradientBrush>
<Color x:Key="WindowBackgroundHoverColor">#FFF</Color>
<LinearGradientBrush x:Key="SelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#CC9ACBFF" Offset="0" />
<GradientStop Color="#FF7DBAFF" Offset=".3" />
@@ -269,18 +266,63 @@
</LinearGradientBrush>
<SolidColorBrush x:Key="GlyphBrush" Color="#FF2B1717" />
<SolidColorBrush x:Key="LightColorBrush" Color="#E9ECF8" />
<Color x:Key="OnWindowForegroundColor">#FF1B140F</Color>
<Color x:Key="SelectedUnfocusedColor">#FFB6B6B6</Color>
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#F0F0F0" />
<SolidColorBrush x:Key="SynWindowBackgroundBrush" Color="#FFD1D1D1" />
<Color x:Key="SelectedBackgroundColor">#FFFFF8B8</Color>
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="#FF500000" />
<Color x:Key="UiForegroundColor">Black</Color>
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="White" />
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="#F1EFFF" />
<SolidColorBrush x:Key="RowBackgroundBrush" Color="White"/>
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
<Color x:Key="ControlLightColor">#FFFFFFFF</Color>
<Color x:Key="ControlMediumColor">#FFC5C5C5</Color>
<Color x:Key="ControlDarkColor">#FF6B6B6B</Color>
<Color x:Key="ControlMouseOverColor">#FFDADCEC</Color>
<Color x:Key="ControlPressedColor">#FF47909B</Color>
<Color x:Key="BorderLightColor">#D6D6D6</Color>
<Color x:Key="BorderMediumColor">#E6E6E6</Color>
<!--Window Brushes-->
<LinearGradientBrush x:Key="GradientWindowBackgroundBrush" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFAFBAD6" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFD1E3FF" Offset="0.766"/>
<GradientStop Color="#FFE2E8F8" Offset="0.238"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderBrush" EndPoint="0,1">
<GradientStop Color="#EFD3D3" />
<GradientStop Color="#FFB5BBC6" Offset="0.2" />
<GradientStop Color="#FFDDDDF7" Offset="0.8" />
<GradientStop Color="#FF93B1CE" Offset="1" />
</LinearGradientBrush>
<SolidColorBrush x:Key="WindowHeaderInactiveBackgroundBrush" Color="#8888" />
<LinearGradientBrush x:Key="WindowHeaderInactiveBrush" EndPoint="0,1">
<GradientStop Color="#A5A5A5" />
<GradientStop Color="#FF616161" Offset="0.2" />
<GradientStop Color="#FF5C5C5C" Offset="0.8" />
<GradientStop Color="#FFBEC5CB" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF898989" Offset="0"/>
<GradientStop Color="#FF898989" Offset="1"/>
<GradientStop Color="LightGray" Offset="0.841"/>
<GradientStop Color="#FFCBCBCB" Offset="0.23"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowInnerBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F0F0F0" Offset="1" />
<GradientStop Color="White" />
</LinearGradientBrush>
</ResourceDictionary>

View File

@@ -0,0 +1,283 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!--Radiuses-->
<CornerRadius x:Key="DefaultRadiusSmall">1</CornerRadius>
<CornerRadius x:Key="DefaultRadiusNormal">3</CornerRadius>
<CornerRadius x:Key="TabItemRadius">0,8,0,0</CornerRadius>
<CornerRadius x:Key="TabRadiusTop">0,2,2,2</CornerRadius>
<CornerRadius x:Key="TabRadiusLeft">0,5,5,0</CornerRadius>
<CornerRadius x:Key="TabRadiusRight">5,0,0,5</CornerRadius>
<CornerRadius x:Key="TabRadiusBottom">5,5,0,0</CornerRadius>
<Color x:Key="ValidationErrorColor">Red</Color>
<SolidColorBrush x:Key="RowBackgroundBrush" Color="White"/>
<LinearGradientBrush x:Key="AlternatingRowBackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFECF5FF" Offset="0.8"/>
<GradientStop Color="#FFECF5FF" Offset="0.2"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="VerticalNormalBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ProgressBarIndeterminateRootBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#F6BCD5FF" Offset="0.046" />
<GradientStop Color="#96D4E4FF" Offset="0.18" />
<GradientStop Color="#4FFFFFFF" Offset="0.512" />
<GradientStop Color="#00D6D6D6" Offset="0.521" />
<GradientStop Color="#BABCD5FF" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="ProgressBarIndeterminateFillBrush" EndPoint="0,1" StartPoint="20,1" MappingMode="Absolute" SpreadMethod="Repeat">
<LinearGradientBrush.Transform>
<TransformGroup>
<SkewTransform AngleX="-10" />
</TransformGroup>
</LinearGradientBrush.Transform>
<GradientStop Color="#FFBCD5FF" Offset="0.088" />
<GradientStop Color="#006EA4FD" Offset="0.475" />
<GradientStop Color="#FFBCD5FF" Offset="0.899" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalProgressBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FF9EFD9B" Offset="0.0"/>
<GradientStop Color="#FF2FA22A" Offset="0.4"/>
<GradientStop Color="#FFB1ECAF" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#00ffffff"
Offset="0" />
<GradientStop Color="#c0ffffff"
Offset="0.3" />
<GradientStop Color="#d0ffffff"
Offset="0.8" />
<GradientStop Color="#00ffffff"
Offset="1" />
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="HorizontalNormalBorderBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="TopLevelMenuBackgroundHover" Color="Pink" />
<!-- Light Brush -->
<LinearGradientBrush x:Key="HorizontalLightBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Dark Brush -->
<LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#AAA" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="VerticalDarkBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#AAA" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Pressed Brush -->
<LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#E8D4D4" Offset="0.0"/>
<GradientStop Color="#E3E8A6" Offset="0.1"/>
<GradientStop Color="#ECF699" Offset="0.796"/>
<GradientStop Color="#F3F3F3" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TogglePressedBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#E8D4D4" Offset="0.0"/>
<GradientStop Color="#E3E8A6" Offset="0.1"/>
<GradientStop Color="#ECF699" Offset="0.796"/>
<GradientStop Color="#F3F3F3" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="VerticalPressedBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#E8D4D4" Offset="0.0"/>
<GradientStop Color="#E3E8A6" Offset="0.1"/>
<GradientStop Color="#ECF699" Offset="0.796"/>
<GradientStop Color="#F3F3F3" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#444" Offset="0.0"/>
<GradientStop Color="#888" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Defaulted Brush -->
<LinearGradientBrush x:Key="DefaultedBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#777" Offset="0.3"/>
<GradientStop Color="#000" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Disabled Brush -->
<SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />
<!-- Border Brushes -->
<SolidColorBrush x:Key="SolidBorderBrush" Color="#888" />
<SolidColorBrush x:Key="LightBorderBrush" Color="#AAA" />
<!-- Miscellaneous Brushes -->
<LinearGradientBrush x:Key="ScrollBarPageButtonVertBrush" StartPoint="0,0" EndPoint="1,0">
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFD3DBFF" />
<GradientStop Offset="0.3" Color="White" />
<GradientStop Offset="0.7" Color="White" />
<GradientStop Offset="1" Color="#FFD3DBFF" />
</GradientStopCollection>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ScrollBarPageButtonHorizBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFD3DBFF" />
<GradientStop Offset="0.3" Color="White" />
<GradientStop Offset="0.7" Color="White" />
<GradientStop Offset="1" Color="#FFD3DBFF" />
</GradientStopCollection>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TabItemSelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#BBB" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="0.1"/>
<GradientStop Color="#EEE" Offset="0.85"/>
<GradientStop Color="#FFF" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="MainMenuForegroundBrush" Color="Black"/>
<!--Color STYLED Brush-->
<Color x:Key="WindowBackgroundHoverColor">#FFF</Color>
<LinearGradientBrush x:Key="WindowBackgroundBrush">
<GradientStop Color="#EEE" />
</LinearGradientBrush>
<SolidColorBrush x:Key="SelectedBackgroundBrush" Color="#FFC0C9E4" />
<SolidColorBrush x:Key="GlyphBrush" Color="#444" />
<SolidColorBrush x:Key="LightColorBrush" Color="#DDD" />
<Color x:Key="OnWindowForegroundColor">Black</Color>
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#FF4D4D4D" />
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#F0F0F0" />
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="#FF500000" />
<Color x:Key="UiForegroundColor">Black</Color>
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
<Color x:Key="SelectedBackgroundColor">#DEE4FF</Color>
<Color x:Key="SelectedUnfocusedColor">#FFB6B6B6</Color>
<Color x:Key="ControlLightColor">#FFFFFFFF</Color>
<Color x:Key="ControlMediumColor">#FFC5C5C5</Color>
<Color x:Key="ControlDarkColor">#FF6B6B6B</Color>
<Color x:Key="ControlMouseOverColor">#FFDADCEC</Color>
<Color x:Key="ControlPressedColor">#FF47909B</Color>
<Color x:Key="BorderLightColor">#D6D6D6</Color>
<Color x:Key="BorderMediumColor">#E6E6E6</Color>
<!--Window Brushes-->
<SolidColorBrush x:Key="WindowHeaderInactiveBackgroundBrush" Color="#8888" />
<LinearGradientBrush x:Key="GradientWindowBackgroundBrush" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFAFBAD6" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFD1E3FF" Offset="0.766"/>
<GradientStop Color="#FFE2E8F8" Offset="0.238"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderBrush" EndPoint="0,1">
<GradientStop Color="#EFD3D3" />
<GradientStop Color="#FFB5BBC6" Offset="0.2" />
<GradientStop Color="#FFDDDDF7" Offset="0.8" />
<GradientStop Color="#FF93B1CE" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderInactiveBrush" EndPoint="0,1">
<GradientStop Color="#A5A5A5" />
<GradientStop Color="#FF616161" Offset="0.2" />
<GradientStop Color="#FF5C5C5C" Offset="0.8" />
<GradientStop Color="#FFBEC5CB" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF898989" Offset="0"/>
<GradientStop Color="#FF898989" Offset="1"/>
<GradientStop Color="LightGray" Offset="0.841"/>
<GradientStop Color="#FFCBCBCB" Offset="0.23"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowInnerBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F0F0F0" Offset="1" />
<GradientStop Color="White" />
</LinearGradientBrush>
</ResourceDictionary>

View File

@@ -22,6 +22,8 @@
<Color x:Key="ControlMouseOverColor" >#FF414888</Color>
<Color x:Key="ControlPressedColor" >#FF47909B</Color>
<Color x:Key="BorderLightColor">#D6D6D6</Color>
<Color x:Key="BorderMediumColor">#E6E6E6</Color>
<Color x:Key="ValidationErrorColor" >#FF3333</Color>
@@ -80,6 +82,7 @@
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="Black" />
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="#555555" />
<SolidColorBrush x:Key="RowBackgroundBrush" Color="#6C6C6C" />
<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
@@ -300,5 +303,5 @@
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="WindowHeaderInactiveBackgroundBrush" Color="#8888" />
</ResourceDictionary>

View File

@@ -219,7 +219,8 @@
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="White" />
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="#F1F1F1" />
<SolidColorBrush x:Key="RowBackgroundBrush" Color="White"/>
<Color x:Key="SelectedBackgroundColor">#E3E3E3</Color>
@@ -230,7 +231,45 @@
<Color x:Key="ControlMouseOverColor">#FFEEEEEE</Color>
<Color x:Key="ControlPressedColor">#FF47909B</Color>
<Color x:Key="BorderLightColor">#D6D6D6</Color>
<Color x:Key="BorderMediumColor">#E6E6E6</Color>
<!--Window Brushes-->
<SolidColorBrush x:Key="WindowHeaderInactiveBackgroundBrush" Color="#8888" />
<LinearGradientBrush x:Key="GradientWindowBackgroundBrush" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFD0D8EC" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFE9F2FF" Offset="0.766"/>
<GradientStop Color="#FFE2E8F8" Offset="0.238"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderBrush" EndPoint="0,1">
<GradientStop Color="#F4F4FF" />
<GradientStop Color="#FFB5BBC6" Offset="0.2" />
<GradientStop Color="#FFE7E7FC" Offset="0.8" />
<GradientStop Color="#FFD4EAFF" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderInactiveBrush" EndPoint="0,1">
<GradientStop Color="#A5A5A5" />
<GradientStop Color="#FF616161" Offset="0.2" />
<GradientStop Color="#FF5C5C5C" Offset="0.8" />
<GradientStop Color="#FFBEC5CB" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF898989" Offset="0"/>
<GradientStop Color="#FF898989" Offset="1"/>
<GradientStop Color="LightGray" Offset="0.841"/>
<GradientStop Color="#FFCBCBCB" Offset="0.23"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowInnerBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F0F0F0" Offset="1" />
<GradientStop Color="White" />
</LinearGradientBrush>
</ResourceDictionary>

View File

@@ -248,7 +248,8 @@
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="White" />
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="#E6E6E6" />
<SolidColorBrush x:Key="RowBackgroundBrush" Color="White"/>
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
@@ -284,6 +285,40 @@
<Color x:Key="ControlMouseOverColor">#FFCED0E1</Color>
<Color x:Key="ControlPressedColor">#FF47909B</Color>
<Color x:Key="BorderLightColor">#D6D6D6</Color>
<Color x:Key="BorderMediumColor">#E6E6E6</Color>
<!--Window Brushes-->
<LinearGradientBrush x:Key="WindowHeaderBrush" EndPoint="0,1">
<GradientStop Color="#9EF4F4FF" />
<GradientStop Color="#80B5BBC6" Offset="0.2" />
<GradientStop Color="#93E7E7FC" Offset="0.8" />
<GradientStop Color="#A9D4EAFF" Offset="1" />
</LinearGradientBrush>
<SolidColorBrush x:Key="WindowHeaderInactiveBackgroundBrush" Color="#8888" />
<LinearGradientBrush x:Key="WindowHeaderInactiveBrush" EndPoint="0,1">
<GradientStop Color="#A5A5A5" />
<GradientStop Color="#FF616161" Offset="0.2" />
<GradientStop Color="#FF5C5C5C" Offset="0.8" />
<GradientStop Color="#FFBEC5CB" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF898989" Offset="0"/>
<GradientStop Color="#FF898989" Offset="1"/>
<GradientStop Color="LightGray" Offset="0.841"/>
<GradientStop Color="#FFCBCBCB" Offset="0.23"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowInnerBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F0F0F0" Offset="1" />
<GradientStop Color="White" />
</LinearGradientBrush>
</ResourceDictionary>

View File

@@ -0,0 +1,41 @@
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
namespace BrightSharp.Themes
{
internal partial class ThemeStatic
{
public void CalendarPreviewMouseUp(object sender, MouseEventArgs e) {
if (Mouse.Captured is CalendarItem) { Mouse.Capture(null); }
}
public void DatePickerUnloaded(object sender, RoutedEventArgs e) {
if (sender == null) return;
DependencyObject child = ((Popup)((DatePicker)sender).Template.FindName("PART_Popup", (FrameworkElement)sender))?.Child;
while (child != null && !(child is AdornerDecorator))
child = VisualTreeHelper.GetParent(child) ?? LogicalTreeHelper.GetParent(child);
if (((AdornerDecorator)child)?.Child is Calendar) ((AdornerDecorator)child).Child = null;
}
private void closeButton_Click(object sender, RoutedEventArgs e) {
var window = Window.GetWindow((DependencyObject)sender);
window.Close();
}
private void maximizeButton_Click(object sender, RoutedEventArgs e) {
var window = Window.GetWindow((DependencyObject)sender);
window.WindowState = window.WindowState == WindowState.Normal ? WindowState.Maximized : WindowState.Normal;
}
private void minimizeButton_Click(object sender, RoutedEventArgs e) {
var window = Window.GetWindow((DependencyObject)sender);
window.WindowState = WindowState.Minimized;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,4 @@
using System;
using System.Windows;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Documents;
@@ -8,19 +7,13 @@ using System.Windows.Media;
namespace BrightSharp.Themes
{
internal partial class Theme
{
public Theme() {
}
public void CalendarPreviewMouseUp(object sender, MouseEventArgs e)
{
public void CalendarPreviewMouseUp(object sender, MouseEventArgs e) {
if (Mouse.Captured is CalendarItem) { Mouse.Capture(null); }
}
public void DatePickerUnloaded(object sender, RoutedEventArgs e)
{
public void DatePickerUnloaded(object sender, RoutedEventArgs e) {
if (sender == null) return;
DependencyObject child = ((Popup)((DatePicker)sender).Template.FindName("PART_Popup", (FrameworkElement)sender))?.Child;
while (child != null && !(child is AdornerDecorator))
@@ -29,23 +22,19 @@ namespace BrightSharp.Themes
}
private void closeButton_Click(object sender, RoutedEventArgs e)
{
private void closeButton_Click(object sender, RoutedEventArgs e) {
var window = Window.GetWindow((DependencyObject)sender);
window.Close();
}
private void maximizeButton_Click(object sender, RoutedEventArgs e)
{
private void maximizeButton_Click(object sender, RoutedEventArgs e) {
var window = Window.GetWindow((DependencyObject)sender);
window.WindowState = window.WindowState == WindowState.Normal ? WindowState.Maximized : WindowState.Normal;
}
private void minimizeButton_Click(object sender, RoutedEventArgs e)
{
private void minimizeButton_Click(object sender, RoutedEventArgs e) {
var window = Window.GetWindow((DependencyObject)sender);
window.WindowState = WindowState.Minimized;
}
}
}

View File

@@ -1,14 +1,16 @@
<ResourceDictionary x:Class="BrightSharp.Themes.Theme" x:ClassModifier="internal"
<ResourceDictionary x:Class="BrightSharp.Themes.Theme"
x:ClassModifier="internal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:BrightSharp.Converters"
xmlns:bs="clr-namespace:BrightSharp.Extensions">
xmlns:bs="clr-namespace:BrightSharp.Extensions"
xmlns:conv="clr-namespace:BrightSharp.Converters">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Diagrams/DesignerItem.xaml" />
<ResourceDictionary Source="Controls/ZoomControl.xaml" />
<ResourceDictionary Source="Controls/PropertyGrid.xaml" />
</ResourceDictionary.MergedDictionaries>
<!--Converters-->
<conv:ThicknessConverter x:Key="ThickConv" />
@@ -17,284 +19,9 @@
<BooleanToVisibilityConverter x:Key="btvc" />
<conv:InverseBooleanToVisibilityConverter x:Key="ibtvc" />
<!--Radiuses-->
<CornerRadius x:Key="DefaultRadiusSmall">1</CornerRadius>
<CornerRadius x:Key="DefaultRadiusNormal">3</CornerRadius>
<CornerRadius x:Key="TabItemRadius">0,8,0,0</CornerRadius>
<CornerRadius x:Key="TabRadiusTop">0,2,2,2</CornerRadius>
<CornerRadius x:Key="TabRadiusLeft">0,5,5,0</CornerRadius>
<CornerRadius x:Key="TabRadiusRight">5,0,0,5</CornerRadius>
<CornerRadius x:Key="TabRadiusBottom">5,5,0,0</CornerRadius>
<Color x:Key="ValidationErrorColor">Red</Color>
<SolidColorBrush x:Key="RowBackgroundBrush" Color="White"/>
<LinearGradientBrush x:Key="AlternatingRowBackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFECF5FF" Offset="0.8"/>
<GradientStop Color="#FFECF5FF" Offset="0.2"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="VerticalNormalBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ProgressBarIndeterminateRootBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#F6BCD5FF" Offset="0.046" />
<GradientStop Color="#96D4E4FF" Offset="0.18" />
<GradientStop Color="#4FFFFFFF" Offset="0.512" />
<GradientStop Color="#00D6D6D6" Offset="0.521" />
<GradientStop Color="#BABCD5FF" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="ProgressBarIndeterminateFillBrush" EndPoint="0,1" StartPoint="20,1" MappingMode="Absolute" SpreadMethod="Repeat">
<LinearGradientBrush.Transform>
<TransformGroup>
<SkewTransform AngleX="-10" />
</TransformGroup>
</LinearGradientBrush.Transform>
<GradientStop Color="#FFBCD5FF" Offset="0.088" />
<GradientStop Color="#006EA4FD" Offset="0.475" />
<GradientStop Color="#FFBCD5FF" Offset="0.899" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalProgressBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FF9EFD9B" Offset="0.0"/>
<GradientStop Color="#FF2FA22A" Offset="0.4"/>
<GradientStop Color="#FFB1ECAF" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#00ffffff"
Offset="0" />
<GradientStop Color="#c0ffffff"
Offset="0.3" />
<GradientStop Color="#d0ffffff"
Offset="0.8" />
<GradientStop Color="#00ffffff"
Offset="1" />
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="HorizontalNormalBorderBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="TopLevelMenuBackgroundHover" Color="Pink" />
<!-- Light Brush -->
<LinearGradientBrush x:Key="HorizontalLightBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Dark Brush -->
<LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#AAA" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="VerticalDarkBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#AAA" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Pressed Brush -->
<LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#E8D4D4" Offset="0.0"/>
<GradientStop Color="#E3E8A6" Offset="0.1"/>
<GradientStop Color="#ECF699" Offset="0.796"/>
<GradientStop Color="#F3F3F3" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TogglePressedBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#E8D4D4" Offset="0.0"/>
<GradientStop Color="#E3E8A6" Offset="0.1"/>
<GradientStop Color="#ECF699" Offset="0.796"/>
<GradientStop Color="#F3F3F3" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="VerticalPressedBrush" StartPoint="0,0" EndPoint="1,0">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#E8D4D4" Offset="0.0"/>
<GradientStop Color="#E3E8A6" Offset="0.1"/>
<GradientStop Color="#ECF699" Offset="0.796"/>
<GradientStop Color="#F3F3F3" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#444" Offset="0.0"/>
<GradientStop Color="#888" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Defaulted Brush -->
<LinearGradientBrush x:Key="DefaultedBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#777" Offset="0.3"/>
<GradientStop Color="#000" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Disabled Brush -->
<SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />
<!-- Border Brushes -->
<SolidColorBrush x:Key="SolidBorderBrush" Color="#888" />
<SolidColorBrush x:Key="LightBorderBrush" Color="#AAA" />
<!-- Miscellaneous Brushes -->
<LinearGradientBrush x:Key="ScrollBarPageButtonVertBrush" StartPoint="0,0" EndPoint="1,0">
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFD3DBFF" />
<GradientStop Offset="0.3" Color="White" />
<GradientStop Offset="0.7" Color="White" />
<GradientStop Offset="1" Color="#FFD3DBFF" />
</GradientStopCollection>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ScrollBarPageButtonHorizBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFD3DBFF" />
<GradientStop Offset="0.3" Color="White" />
<GradientStop Offset="0.7" Color="White" />
<GradientStop Offset="1" Color="#FFD3DBFF" />
</GradientStopCollection>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TabItemSelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#BBB" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="0.1"/>
<GradientStop Color="#EEE" Offset="0.85"/>
<GradientStop Color="#FFF" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="MainMenuForegroundBrush" Color="Black"/>
<!--Color STYLED Brush-->
<Color x:Key="WindowBackgroundHoverColor">#FFF</Color>
<LinearGradientBrush x:Key="WindowBackgroundBrush">
<GradientStop Color="#EEE" />
</LinearGradientBrush>
<SolidColorBrush x:Key="SelectedBackgroundBrush" Color="#FFC0C9E4" />
<SolidColorBrush x:Key="GlyphBrush" Color="#444" />
<SolidColorBrush x:Key="LightColorBrush" Color="#DDD" />
<Color x:Key="OnWindowForegroundColor">Black</Color>
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#FF4D4D4D" />
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="1.0"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#F0F0F0" />
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="#FF500000" />
<Color x:Key="UiForegroundColor">Black</Color>
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
<Color x:Key="SelectedBackgroundColor">#DEE4FF</Color>
<Color x:Key="SelectedUnfocusedColor">#FFB6B6B6</Color>
<Color x:Key="ControlLightColor">#FFFFFFFF</Color>
<Color x:Key="ControlMediumColor">#FFC5C5C5</Color>
<Color x:Key="ControlDarkColor">#FF6B6B6B</Color>
<Color x:Key="ControlMouseOverColor">#FFDADCEC</Color>
<Color x:Key="ControlPressedColor">#FF47909B</Color>
<Color x:Key="BorderLightColor">#D6D6D6</Color>
<Color x:Key="BorderMediumColor">#E6E6E6</Color>
<!--Window Brushes-->
<LinearGradientBrush x:Key="GradientWindowBackgroundBrush" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFAFBAD6" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFD1E3FF" Offset="0.766"/>
<GradientStop Color="#FFE2E8F8" Offset="0.238"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderBrush" EndPoint="0,1">
<GradientStop Color="#EFD3D3" />
<GradientStop Color="#FFB5BBC6" Offset="0.2" />
<GradientStop Color="#FFDDDDF7" Offset="0.8" />
<GradientStop Color="#FF93B1CE" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowHeaderInactiveBrush" EndPoint="0,1">
<GradientStop Color="#A5A5A5" />
<GradientStop Color="#FF616161" Offset="0.2" />
<GradientStop Color="#FF5C5C5C" Offset="0.8" />
<GradientStop Color="#FFBEC5CB" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF898989" Offset="0"/>
<GradientStop Color="#FF898989" Offset="1"/>
<GradientStop Color="LightGray" Offset="0.841"/>
<GradientStop Color="#FFCBCBCB" Offset="0.23"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowInnerBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F0F0F0" Offset="1" />
<GradientStop Color="White" />
</LinearGradientBrush>
<!--STYLES-->
<ContextMenu x:Key="DecoTextBoxContextMenu">
<MenuItem Command="ApplicationCommands.Copy">
<MenuItem.Icon>
@@ -5999,4 +5726,5 @@
</Setter>
</Style>
</ResourceDictionary>

View File

@@ -3,11 +3,13 @@ using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Threading;
namespace BrightSharp.Themes
{
public enum ColorThemes
{
None,
Classic,
DevLab,
Silver,
@@ -18,30 +20,53 @@ namespace BrightSharp.Themes
public static class ThemeManager
{
private const string StyleDictionaryPattern = @"(?<=.+style\.)(.*?)(?=\.xaml)";
private const string StaticThemeDictionaryUri = "/brightsharp;component/themes/theme.static.xaml";
static ColorThemes? _theme;
public static ColorThemes Theme
{
get
{
get {
if (_theme.HasValue) return _theme.Value;
var curStyleRes = Resources.Where(r => r.Source != null &&
Regex.IsMatch(r.Source.OriginalString, StyleDictionaryPattern, RegexOptions.IgnoreCase)).FirstOrDefault();
if (curStyleRes == null) return ColorThemes.Classic;
if (curStyleRes == null) return ColorThemes.None;
var match = Regex.Match(curStyleRes.Source.OriginalString, StyleDictionaryPattern, RegexOptions.IgnoreCase);
return (ColorThemes)Enum.Parse(typeof(ColorThemes), match.Value, true);
_theme = (ColorThemes)Enum.Parse(typeof(ColorThemes), match.Value, true);
return _theme.Value;
}
set
set {
SetTheme(value);
}
}
public static DispatcherOperation SetTheme(ColorThemes value, DispatcherPriority priority = DispatcherPriority.Background) {
if (_theme == value) return Application.Current.Dispatcher.BeginInvoke(new Action(() => { }), priority);
_theme = value;
return Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
if (_theme != value) return;
Application.Current.Resources.BeginInit();
var curStyleRes = Resources.Where(r => r.Source != null &&
Regex.IsMatch(r.Source.OriginalString, StyleDictionaryPattern, RegexOptions.IgnoreCase)).FirstOrDefault();
var curThemeRes = Resources.Where(r => r.Source != null && r.Source.OriginalString.Equals(StaticThemeDictionaryUri, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
if (curThemeRes != null)
Resources.Remove(curThemeRes);
if (curStyleRes != null)
Resources.Remove(curStyleRes);
if (value == ColorThemes.Classic)
return;
Resources.Add(new ResourceDictionary()
{
Source = new Uri($"/brightsharp;component/themes/style.{value}.xaml", UriKind.RelativeOrAbsolute)
});
}
if (value == ColorThemes.None) return;
Resources.Add(new ResourceDictionary() { Source = new Uri($"/brightsharp;component/themes/style.{value}.xaml", UriKind.RelativeOrAbsolute) });
if (curThemeRes != null)
Resources.Add(new ResourceDictionary() { Source = new Uri(StaticThemeDictionaryUri, UriKind.RelativeOrAbsolute) });
Application.Current.Resources.EndInit();
ThemeChanged?.Invoke(null, EventArgs.Empty);
}), priority);
}
public static event EventHandler ThemeChanged;
private static ICollection<ResourceDictionary> Resources
{
get { return Application.Current.Resources.MergedDictionaries; }

View File

@@ -7,7 +7,7 @@
Professional WPF Themes and User Controls. It requires `.NET 4.5`.
### Current Version 2.0
### Current Version 2.1
### Nuget

View File

@@ -4,7 +4,9 @@
```xml
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/brightsharp;component/generic.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/style.classic.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/theme.xaml" />
</ResourceDictionary.MergedDictionaries>
@@ -15,7 +17,7 @@
Change by `ThemeManager`
```c#
ThemeManager.CurrentTheme = ColorThemes.Classic;
ThemeManager.CurrentTheme = ColorThemes.DarkBlue;
```
# Change themes by ResourceDictionary
@@ -23,12 +25,15 @@ Change by `ThemeManager`
As default we use Classic theme.
You also can change theme by adding resource dictionary after generic.xaml. Use one of them:
```xml
<ResourceDictionary Source="/brightsharp;component/style.devlab.xaml" />
<ResourceDictionary Source="/brightsharp;component/style.blue.xaml" />
<ResourceDictionary Source="/brightsharp;component/style.darkblue.xaml" />
<ResourceDictionary Source="/brightsharp;component/style.silver.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/style.classic.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/style.devlab.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/style.silver.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/style.blue.xaml" />
<ResourceDictionary Source="/brightsharp;component/themes/style.darkblue.xaml" />
```
## NOTE
## NOTES
You can use custom window style named `BrightSharpWindowStyle`.
Also defined additional useful styles and extensions. For more info see Demo source code.
<!--Theme resource use `DynamicResource`. If you want, you can use `StaticResource` via **`theme.static.xaml`**.-->